当前位置:  首页>> 技术小册>> PHP合辑3-数组函数

PHP中的数组是一种数据结构,它允许我们将多个相似数据类型的元素存储在单个变量中,从而为我们节省了为每个数据创建不同变量的麻烦。数组有助于创建类似类型的元素列表,可以使用它们的索引或键进行访问。假设我们想存储五个名称并打印它们。

可以通过使用五个不同的字符串变量轻松完成。但如果数字不是五个,而是上升到一百,那么对于用户或开发人员来说,创建这么多不同的变量将非常困难。在这里,数组发挥作用,帮助我们将每个元素存储在单个变量中,并允许使用索引或键轻松访问。使用array()函数在PHP中创建数组。

PHP中有三种基本的数组类型:

  • 索引或数字数组:具有数字索引的数组,其中值线性存储。
  • 关联数组:具有字符串索引的数组,其中每个值可以分配一个特定的键,而不是线性存储。
  • 多维数组:包含单个或多个数组的数组,可以通过多个索引进行访问。
  • 索引或数字数组

这些类型的数组可以用于存储任何类型的元素,但索引始终是数字。默认情况下,索引从零开始。这些数组可以通过以下示例中所示的两种不同方式创建:

  1. <?php
  2. // One way to create an indexed array
  3. $name_one = array("Zack", "Anthony", "Ram", "Salim", "Raghav");
  4. // Accessing the elements directly
  5. echo "Accessing the 1st array elements directly:\n";
  6. echo $name_one[2], "\n";
  7. echo $name_one[0], "\n";
  8. echo $name_one[4], "\n";
  9. // Second way to create an indexed array
  10. $name_two[0] = "ZACK";
  11. $name_two[1] = "ANTHONY";
  12. $name_two[2] = "RAM";
  13. $name_two[3] = "SALIM";
  14. $name_two[4] = "RAGHAV";
  15. // Accessing the elements directly
  16. echo "Accessing the 2nd array elements directly:\n";
  17. echo $name_two[2], "\n";
  18. echo $name_two[0], "\n";
  19. echo $name_two[4], "\n";
  20. ?>

output

  1. Accessing the 1st array elements directly:
  2. Ram
  3. Zack
  4. Raghav
  5. Accessing the 2nd array elements directly:
  6. RAM
  7. ZACK
  8. RAGHAV

遍历:我们可以在PHP中使用循环遍历索引数组。我们可以通过两种方式循环遍历索引数组,首先使用for循环,其次使用foreach。我们将在后面的小节中介绍PHP |循环的语法和基本用法。

  1. <?php
  2. // Creating an indexed array
  3. $name_one = array("Zack", "Anthony", "Ram", "Salim", "Raghav");
  4. // One way of Looping through an array using foreach
  5. echo "Looping using foreach: \n";
  6. foreach ($name_one as $val){
  7. echo $val. "\n";
  8. }
  9. // count() function is used to count
  10. // the number of elements in an array
  11. $round = count($name_one);
  12. echo "\nThe number of elements are $round \n";
  13. // Another way to loop through the array using for
  14. echo "Looping using for: \n";
  15. for($n = 0; $n < $round; $n++){
  16. echo $name_one[$n], "\n";
  17. }
  18. ?>

output:

  1. Looping using foreach:
  2. Zack
  3. Anthony
  4. Ram
  5. Salim
  6. Raghav
  7. The number of elements is 5
  8. Looping using for:
  9. ZACK
  10. ANTHONY
  11. RAM
  12. SALIM
  13. RAGHAV

关联数组

这些类型的数组与索引数组相似,但是不是线性存储,每个值可以分配用户定义的字符串类型的键。

示例:

  1. <?php
  2. // One way to create an associative array
  3. $name_one = array("Zack"=>"Zara", "Anthony"=>"Any",
  4. "Ram"=>"Rani", "Salim"=>"Sara",
  5. "Raghav"=>"Ravina");
  6. // Second way to create an associative array
  7. $name_two["zack"] = "zara";
  8. $name_two["anthony"] = "any";
  9. $name_two["ram"] = "rani";
  10. $name_two["salim"] = "sara";
  11. $name_two["raghav"] = "ravina";
  12. // Accessing the elements directly
  13. echo "Accessing the elements directly:\n";
  14. echo $name_two["zack"], "\n";
  15. echo $name_two["salim"], "\n";
  16. echo $name_two["anthony"], "\n";
  17. echo $name_one["Ram"], "\n";
  18. echo $name_one["Raghav"], "\n";
  19. ?>

output:

  1. Accessing the elements directly:
  2. zara
  3. sara
  4. any
  5. Rani
  6. Ravina

遍历关联数组:我们可以通过与遍历数字数组相似的方式,使用循环遍历关联数组。我们可以通过两种方式循环遍历关联数组。第一种是使用for循环,第二种是使用foreach循环。

  1. <?php
  2. // Creating an associative array
  3. $name_one = array("Zack"=>"Zara", "Anthony"=>"Any",
  4. "Ram"=>"Rani", "Salim"=>"Sara",
  5. "Raghav"=>"Ravina");
  6. // Looping through an array using foreach
  7. echo "Looping using foreach: \n";
  8. foreach ($name_one as $val => $val_value){
  9. echo "Husband is ".$val." and Wife is ".$val_value."\n";
  10. }
  11. // Looping through an array using for
  12. echo "\nLooping using for: \n";
  13. $keys = array_keys($name_two);
  14. $round = count($name_two);
  15. for($i=0; $i < $round; ++$i) {
  16. echo $keys[$i] . ' ' . $name_two[$keys[$i]] . "\n";
  17. }
  18. ?>

output:

  1. Looping using foreach:
  2. Husband is Zack and Wife is Zara
  3. Husband is Anthony and Wife is Any
  4. Husband is Ram and Wife is Rani
  5. Husband is Salim and Wife is Sara
  6. Husband is Raghav and Wife is Ravina
  7. Looping using for:
  8. zack zara
  9. anthony any
  10. ram rani
  11. salim sara
  12. raghav ravina

多维数组

多维数组是指每个索引存储另一个数组而不是单个元素。换句话说,我们可以将多维数组定义为数组的数组。顾名思义,此数组中的每个元素都可以是数组,并且它们还可以包含其他子数组。多维数组中的数组或子数组可以使用多个维度进行访问。

示例:

  1. <?php
  2. // Defining a multidimensional array
  3. $favorites = array(
  4. array(
  5. "name" => "Dave Punk",
  6. "mob" => "5689741523",
  7. "email" => "davepunk@gmail.com",
  8. ),
  9. array(
  10. "name" => "Monty Smith",
  11. "mob" => "2584369721",
  12. "email" => "montysmith@gmail.com",
  13. ),
  14. array(
  15. "name" => "John Flinch",
  16. "mob" => "9875147536",
  17. "email" => "johnflinch@gmail.com",
  18. )
  19. );
  20. // Accessing elements
  21. echo "Dave Punk email-id is: " . $favorites[0]["email"], "\n";
  22. echo "John Flinch mobile number is: " . $favorites[2]["mob"];
  23. ?>

output:

  1. Dave Punk email-id is: davepunk@gmail.com
  2. John Flinch mobile number is: 9875147536

遍历多维数组:我们可以通过嵌套的方式使用for和foreach循环遍历多维数组。也就是说,一个for循环用于外层数组,一个for循环用于内层数组。

  1. <?php
  2. // Defining a multidimensional array
  3. $favorites = array(
  4. "Dave Punk" => array(
  5. "mob" => "5689741523",
  6. "email" => "davepunk@gmail.com",
  7. ),
  8. "Dave Punk" => array(
  9. "mob" => "2584369721",
  10. "email" => "montysmith@gmail.com",
  11. ),
  12. "John Flinch" => array(
  13. "mob" => "9875147536",
  14. "email" => "johnflinch@gmail.com",
  15. )
  16. );
  17. // Using for and foreach in nested form
  18. $keys = array_keys($favorites);
  19. for($i = 0; $i < count($favorites); $i++) {
  20. echo $keys[$i] . "\n";
  21. foreach($favorites[$keys[$i]] as $key => $value) {
  22. echo $key . " : " . $value . "\n";
  23. }
  24. echo "\n";
  25. }
  26. ?>

output:

  1. Dave Punk
  2. mob : 2584369721
  3. email : montysmith@gmail.com
  4. John Flinch
  5. mob : 9875147536
  6. email : johnflinch@gmail.com