数组
PHP中的数组是一种数据结构,它允许我们在单个变量下存储多个相似数据类型的元素,从而节省了为每个数据创建不同变量的工作量。数组有助于创建类似类型的元素列表,可以使用它们的索引或键访问这些元素。假设我们要存储五个名称并相应地打印它们。这可以通过使用五个不同的字符串变量轻松实现。但是如果不是5,而是100,那么用户或开发人员就很难创建这么多不同的变量。数组在这里发挥作用,帮助我们将每个元素存储在一个变量中,还允许使用索引或键方便地访问。使用PHP中的array()函数创建数组。
PHP中有三种类型的数组:
- 索引或数字数组:具有数字索引的数组,其值线性存储。
- 关联数组:具有字符串索引的数组,其中每个值可以分配一个特定的键,而不是线性存储。
- 多维数组:包含单个或多个数组的数组,可以通过多个索引访问。
索引或数字数组
这些类型的数组可以用来存储任何类型的元素,但是索引总是一个数字。默认情况下,索引从0开始。这些数组可以以两种不同的方式创建,如下例所示:
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php // 创建索引数组的一种方法 $name_one = array("Zack", "Anthony", "Ram", "Salim", "Raghav"); // 直接访问元素 echo "Accessing the 1st array elements directly:\n"; echo $name_one[2], "\n"; echo $name_one[0], "\n"; echo $name_one[4], "\n"; //第二种创建索引数组的方法 $name_two[0] = "ZACK"; $name_two[1] = "ANTHONY"; $name_two[2] = "RAM"; $name_two[3] = "SALIM"; $name_two[4] = "RAGHAV"; // 直接访问元素 echo "Accessing the 2nd array elements directly:\n"; echo $name_two[2], "\n"; echo $name_two[0], "\n"; echo $name_two[4], "\n"; ?> |
输出
1 2 3 4 5 6 7 8 | Accessing the 1st array elements directly: Ram Zack Raghav Accessing the 2nd array elements directly: RAM ZACK RAGHAV |
遍历:我们可以使用PHP中的循环遍历索引数组。我们可以通过两种方式循环索引数组。首先使用for循环,其次使用foreach。您可以参考PHP |循环来了解其语法和基本用法。
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php // 创建索引数组 $name_one = array("Zack", "Anthony", "Ram", "Salim", "Raghav"); // 遍历数组usign foreach的一种方法 echo "Looping using foreach: \n"; foreach ($name_one as $val){ echo $val. "\n"; } // count() 函数的作用是:计数 // the number of elements in an array $round = count($name_two); echo "\nThe number of elements are $round \n"; // 使用for循环遍历数组的另一种方法 echo "Looping using for: \n"; for($n = 0; $n < $round; $n++){ echo $name_two[$n], "\n"; } ?> |
输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Looping using foreach: Zack Anthony Ram Salim Raghav The number of elements are 5 Looping using for: ZACK ANTHONY RAM SALIM RAGHAV |
关联数组
这些类型的数组与索引数组相似,但不是线性存储,每个值都可以用用户定义的字符串类型键来赋值。
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php // 创建关联数组的一种方法 $name_one = array("Zack"=>"Zara", "Anthony"=>"Any", "Ram"=>"Rani", "Salim"=>"Sara", "Raghav"=>"Ravina"); // 第二种创建关联数组的方法 $name_two["zack"] = "zara"; $name_two["anthony"] = "any"; $name_two["ram"] = "rani"; $name_two["salim"] = "sara"; $name_two["raghav"] = "ravina"; // 直接访问元素 echo "Accessing the elements directly:\n"; echo $name_two["zack"], "\n"; echo $name_two["salim"], "\n"; echo $name_two["anthony"], "\n"; echo $name_one["Ram"], "\n"; echo $name_one["Raghav"], "\n"; ?> |
输出
1 2 3 4 5 6 | Accessing the elements directly: zara sara any Rani Ravina |
遍历关联数组:我们可以像在数字数组中使用循环那样遍历关联数组。我们可以通过两种方式循环关联数组。首先使用for循环,其次使用foreach。您可以参考PHP |循环来了解其语法和基本用法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php // 创建关联数组 $name_one = array("Zack"=>"Zara", "Anthony"=>"Any", "Ram"=>"Rani", "Salim"=>"Sara", "Raghav"=>"Ravina"); // 使用foreach循环遍历数组 echo "Looping using foreach: \n"; foreach ($name_one as $val => $val_value){ echo "Husband is ".$val." and Wife is ".$val_value."\n"; } // 通过使用for的数组循环 echo "\nLooping using for: \n"; $keys = array_keys($name_two); $round = count($name_two); for($i=0; $i < $round; ++$i) { echo $keys[$i] . ' ' . $name_two[$keys[$i]] . "\n"; } ?> |
输出
1 2 3 4 5 6 7 8 9 10 11 12 13 | Looping using foreach: Husband is Zack and Wife is Zara Husband is Anthony and Wife is Any Husband is Ram and Wife is Rani Husband is Salim and Wife is Sara Husband is Raghav and Wife is Ravina Looping using for: zack zara anthony any ram rani salim sara raghav ravina |
多维数组
多维数组是这样的数组,它在每个索引处存储另一个数组,而不是单个元素。换句话说,我们可以将多维数组定义为数组的数组。顾名思义,这个数组中的每个元素都可以是一个数组,它们还可以包含其他子数组。多维数组中的数组或子数组可以使用多维访问。
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php // 定义多维数组 $favorites = array( array( "name" => "Dave Punk", "mob" => "5689741523", "email" => "davepunk@gmail.com", ), array( "name" => "Monty Smith", "mob" => "2584369721", "email" => "montysmith@gmail.com", ), array( "name" => "John Flinch", "mob" => "9875147536", "email" => "johnflinch@gmail.com", ) ); // 访问元素 echo "Dave Punk email-id is: " . $favorites[0]["email"], "\n"; echo "John Flinch mobile number is: " . $favorites[1]["mob"]; ?> |
输出
1 2 3 4 5 6 7 | Dave Punk mob : 2584369721 email : montysmith@gmail.com John Flinch mob : 9875147536 email : johnflinch@gmail.com |