登录   注册

绚丽彩虹のPHP速成教程系列 – 第五课 – 数组的应用

PHP教程 xlch 1年前 (2017-05-08) 825次浏览 1个评论 扫描二维码

上一节已经讲述过了变量,接下来介绍一种比变量更强大的东西:数组(Array)。

那么在php5.2的版本,数组必须用array()来生成,5.3及以上版本已经可以用[]来生成了。

举个例子:

//<a href="https://xlch.me/tag/php" title="查看更多关于PHP的文章">PHP</a>5.2
$QwQ=array('aaa','bbb','ccc');

//<a href="https://xlch.me/tag/php" title="查看更多关于PHP的文章">PHP</a>5.3及以上
$QwQ=['aaa','bbb','ccc'];

5.3之后就会方便很多,不用敲一大堆的array。

那么这个能干什么呢?

首先可以当成一个列表来使用。

$QwQ=['aaa','bbb','ccc','ddd','eee','fff','ggg','hhh']; //存储字符串
$QwQ=[1,2,3,4,5,6,7,8,9,10];//存储<a href="https://xlch.me/tag/%e6%95%b0%e7%bb%84" title="查看更多关于数组的文章">数组</a>
$QwQ=['1','2',3,4,5,'aaa','ff','bb'];//混合

各数据之间使用英文的逗号“,”来分割。

理论上说,数组可以存储任意类型的数据。

那么接下来就可以看看数组更为强大的一面了:

$QwQ=[
    'aa'=>15,
    'bb'=>16,
    'cc'=>54
];

这个就是二维数组了,它并不只限于这样,理论上说,仍然可以无限的向下扩展。如下:

$QwQ=[ 'aa'=>15,
    'bb'=>16,
    'cc'=>[
        'bbb'=>'www',
        'a'=>[1,1,1,1,2,3,4,5,6],
        'aw'=>[
            'QwQ',
            [
                'QQQQQQQ',
                'aaaaa'
            ]
        ]
    ]
];

那么我们存储这些数据之后,要怎么读取出来呢?

看下面的:

$QwQ=['a','b','c'];
echo $QwQ[1]; //b

对于有序数组,可以这样读取出来。

在编程语言中,一般开始是0,而不是平时数数的从1开始数。

二维数组同理:

$QwQ=[
    'aa'=>15,
    'bb'=>16,
    'cc'=>[
        'bbb'=>'www'
        'vvv'=>[
            '111',
            '222'
        ]
    ]
];
echo $QwQ['aa']; //15
echo $QwQ['cc']['bbb']; //www
echo $QwQ['cc']['vvv'][0]; //111

就是这样。

 

在调试的时候,如何一下子就看到数组里面全部的数据呢?

php有两个比较好使的调试变量的函数:print_r和var_dump。

print_r显示的信息比较简略,只会显示数组的结构,而var_dump则会详细的显示出数据类型和长度。

举个例子吧:

$arr=['1',['1','2','3'],'QwQ'=>'0w0'];
var_dump($arr);

则会输出

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  array(3) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
    [2]=>
    string(1) "3"
  }
  ["QwQ"]=>
  string(3) "0w0"
}

print_r:

$arr=['1',['1','2','3'],'QwQ'=>'0w0'];
print_r($arr);

则会输出:

Array
(
    [0] => 1
    [1] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [QwQ] => 0w0
)

一般情况下使用print_r就足以。

 

那么,如果我想把数组存储起来,或者说我想让他暂时变成文本,稍后再还原成数组,该怎么办?

PHP提供了很多种的将数组转换成字符串的函数,但是我个人比较喜欢json,因为很多地方都是通用的。

使用json_encode($array)函数将一个数组保存成json字符串。

使用json_decode($string,true)函数将json字符串转换为数组。

注:json_decode(,true)第二个参数true为转换为数组,如果为false则会转换成对象类(object),不推荐用这个。

$arr=['1',['1','2','3'],'QwQ'=>'0w0'];
echo json_encode($arr); //{"0":"1","1":["1","2","3"],"QwQ":"0w0"}
print_r(json_decode('{"0":"1","1":["1","2","3"],"QwQ":"0w0"}',true)); //同上面的print_r输出的

 

那么,我的数组很乱,我想给他从大到小/从小到大的排个序,要用什么呢?

关于这里,已经有简单明了的例子,看这里:http://www.w3school.com.cn/php/php_arrays_sort.asp

好了,本章内容到此结束。

 


绚丽彩虹 , 版权所有丨如未注明 , 均为原创丨未经允许,禁止转载
喜欢 (3)
[pay3@xlch8.cn]
分享 (0)

您必须 登录 才能发表评论!

(1)个小伙伴在吐槽