什么是PHP数组
在PHP中,数组可以在一个变量中存储多个数值。
如何创建数组
在PHP中,使用array();来创建一个数组。在PHP中,有三种类型的数组,分别为数值数组、关联数组和多维数组。数值数组就是“带有数字ID键的数组”。关联数组就是“带有指定键的数组,每个键关联一个值”。多维数组顾名思义,就是包含多个数组的数组。
PHP数值数组
数值数组有两种创建的方式,一种是自动分配ID键,另一种是手动分配ID键。自动分配ID键的创建方式很简单,例如
$test=array("array0","array1","array2");
这样,0号键的值就是array0,1号键的值就是array1,2号键的值就是array2。第二种方式就是手动分配ID键
$a[0]="array0";
$a[1]="array1";
$a[2]="array2";
这样,我们也能实现和上面相同的效果。无论是哪种方式创建了数组,调用方式都是一样的。
echo $a[0];
echo $a[1];
echo $a[2];
count()函数的作用是返回数组的长度,也就是元素的数量。有了这个函数,我们就可以通过for循环来遍历输出数组了。
for($x=0;$x
关联数组是用户给数组分配了指定键的数组。它也有两种定义方式。第一种就是使用“键”=>“值”的方法。
$age=array("peter"=>"35","ben"=>"30");
第二种方法就是
$age['peter']="35";
$age['ben']="30";
这两种方法是等价的。在创建好数组之后,我们就可以用这些键来对数组进行访问了。例如
echo "PETER is ".$age['peter']."years old,and ben is ".$age['ben']."years old";
在遍历关联数组的时候,我们需要用到foreach()函数。这个函数有两种用法。第一种是只取值,不取下标。第二种是既取值又取下标。
只取值不取下标:foreach(数组名字 as 值){执行的任务;}。这行代码的功能就是从数组的第一个元素开始,每次将他对应的值去除,放到as后面的那个变量里面,再通过花括号里面的语句对该变量进行操作。例如
"35","Ben"=>"37","Joe"=>"43");
foreach($age as $value)
{
echo "Value=" . $value;
echo "
";
}
?>
这段代码讲的就是从数组的第一个元素开始,把它的值放到$value里面,再将$value输出。对数组中下一个元素执行同样的操作一直到数组结束。注:每次循环过后,$value的值都会发生改变,即$value里面存放的值始终是数组的当前元素对应的值。
既取值又取下标:foreach(数组名字 as 下标=>值){执行的任务;}。该代码的功能和上面一样,只不过需要多出来一个变量来存储当前元素的下标。
"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$value)
{
echo "Key=" . $x . ", Value=" . $value;
echo "
";
}
?>//示例代码引用自(runoob.com)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2018.9.1更新
foreach循环操作的是数组的一个备份,而并非数组本身。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
杂谈
在数组当中,键的数据类型可以是整型,也可以是字符型,而值则可以是任意的类型。在PHP中,键会有这样几种强制转换。
1.包含有合法整型的字符串会被强制转换成整型。例如“8”这个字符串在键里面会被转换成整型数据8,而“08”则不会被转换成整型,因为它不是合法十进制整数。
2.浮点型也会被强制转换成整型。例如某个键为8.7,那么在实际储存当中便会被储存为8.
3.布尔值也会被转换成整型,true被转成1,false被转成0。
4.null会被强制转换为空字符串,即“”。
如果在数组的定义中,多个单元都使用了同一个键名,则只有最后一个有效,前面的都被覆盖了。
键名是一个可选参数,故可以缺省,如果不填,PHP则使用之前最大的整数键名加上1来作为新的键名。例如
"c",
"d",
);
var_dump($array);
?>
这里a所对应的键名就是0,b的键名为1,c的键名为6,而d的键名为7.
在编写程序时,始终将用字符串标识的数组索引加上引号!
在编写程序时,始终将用字符串标识的数组索引加上引号!
在编写程序时,始终将用字符串标识的数组索引加上引号!
如果不加引号,虽然可以输出,但是语法是错误的。在实际操作中,PHP会把没有引号且不对应任何已知符号的字符串转成正常的字符串(即加上了引号)。为了养成良好的习惯,还是要在索引上面加上引号。$a[peter]是错的。$a["peter"]才是正确的,切记。