数组,是PHP基础数据类型中的一种。
//目前的主要定义数组的方法
$arr = ['a'=>1, 'b'=>1];
//php 5.4以前
$arr = array('a'=>1,'b'=>2);
- 从字面理解就是:一组数据。也就是说,这个数据类型中包含了“多个子数据”.这个不难理解,但至关重要。
- 我们对数组的常见操作是:增删改查(这四个字基本涵盖了我们对数据的所有操作,不仅仅是数组)只要理解了数组是“一组数据”的概念之后,增删改查自然也不难理解。就是对这组数据的添加、修改、删除、取出等行为。
key & value
- 数组中包含“一组数据”,每个数据都有一个编号,这个编号就是 key。数据本身,就是 value。
- 在PHP中,方括号([])就是用来操作数组的,增改查,都是“[key]”,所以你只要看到 [ ] 就可以认为这个变量的数据类型是数组(偶有特殊情况,比如字符串也可以用 [],但是极为少见)
- 第二个认知, “=>”该语法,仅用在数组的相关操作上, 左边一定是 key 右边一定是 value。
常见于:
foreach( \$data as \$key=>$value )
或者:
['a'=>1, 'b'=>2]
很多同学学的时候感觉都会,用的时候感觉很懵,那是因为实际环境总是要复杂点.所以,这种基础认知,可以帮助你在复杂的代码中,认清哪些是数组。
And
比如: $a['key'] 你知道是数组,但是你知道吗,x()['key'] 这样的语法也可以。只要 x() 函数的返回值是数组,就可以这样操作(php5.x以后才支持)
你有了基础认知,你就能知道,既然使用了 [] 的语法,那么 x() 函数的返回值一定是数组
function x(){
return [1,2,3];
}
echo x()[1];
对数组有了基础认知之后,我们可以思考一下:哪些场景非数组不可?
没有数组,能不能编程?
思考
最常见的需求:我们从数据库中取出的“数据量”是随机的,可能是3条,可能是500条。
如果每条数据都指定一个变量名,那就尴尬了。500条数据要定义500个变量。
所以,这时候数组的意义就很重大,一个数组类型的变量,可以容纳所有的数据,不管是500还是5000
上文还说到了,数组中有很多 key=>value,其中,key 作为数据编号的存在,是不允许重复的。
value 则比较宽泛,不仅可以重复,还可以是“任何数据类型”,注意:任何数据类型
也就是说,value 也可以是数组,这就形成了二维数组。
$arr = [
'a'=>1;
'b'=>2;
'c'=>[1,2,3];
]
多维数组在操作数据增删改查时,和1维数组没有大的区别,只不过方括号([])多了一点。
//输出a的值
echo $arr['a'];
//输出c的子数组的值
echo $arr['c'][0];
循环
除了上面的基础知识之外,我们对数组最常见的需求,莫过于:循环(专业称呼叫遍历)
也就是逐一的访问数组中的键值对,并做一些操作;比如将数组中,所有的value 都显示在网页上。
我们可以用 foreach/for/while 来循环它,最常用的是 foreach 语法
foreach($arr as $key => $value){
echo $value;
}
这样,就可以将数组中所有的值,都显示在网页上(如果是多维数组,就需要多层foreach嵌套)