PHP中的数组是一种数据结构,它允许我们将多个相似数据类型的元素存储在单个变量中,从而为我们节省了为每个数据创建不同变量的麻烦。数组有助于创建类似类型的元素列表,可以使用它们的索引或键进行访问。假设我们想存储五个名称并打印它们。
可以通过使用五个不同的字符串变量轻松完成。但如果数字不是五个,而是上升到一百,那么对于用户或开发人员来说,创建这么多不同的变量将非常困难。在这里,数组发挥作用,帮助我们将每个元素存储在单个变量中,并允许使用索引或键轻松访问。使用array()函数在PHP中创建数组。
PHP中有三种基本的数组类型:
这些类型的数组可以用于存储任何类型的元素,但索引始终是数字。默认情况下,索引从零开始。这些数组可以通过以下示例中所示的两种不同方式创建:
<?php
// One way to create an indexed array
$name_one = array("Zack", "Anthony", "Ram", "Salim", "Raghav");
// Accessing the elements directly
echo "Accessing the 1st array elements directly:\n";
echo $name_one[2], "\n";
echo $name_one[0], "\n";
echo $name_one[4], "\n";
// Second way to create an indexed array
$name_two[0] = "ZACK";
$name_two[1] = "ANTHONY";
$name_two[2] = "RAM";
$name_two[3] = "SALIM";
$name_two[4] = "RAGHAV";
// Accessing the elements directly
echo "Accessing the 2nd array elements directly:\n";
echo $name_two[2], "\n";
echo $name_two[0], "\n";
echo $name_two[4], "\n";
?>
output
Accessing the 1st array elements directly:
Ram
Zack
Raghav
Accessing the 2nd array elements directly:
RAM
ZACK
RAGHAV
遍历:我们可以在PHP中使用循环遍历索引数组。我们可以通过两种方式循环遍历索引数组,首先使用for循环,其次使用foreach。我们将在后面的小节中介绍PHP |循环的语法和基本用法。
<?php
// Creating an indexed array
$name_one = array("Zack", "Anthony", "Ram", "Salim", "Raghav");
// One way of Looping through an array using foreach
echo "Looping using foreach: \n";
foreach ($name_one as $val){
echo $val. "\n";
}
// count() function is used to count
// the number of elements in an array
$round = count($name_one);
echo "\nThe number of elements are $round \n";
// Another way to loop through the array using for
echo "Looping using for: \n";
for($n = 0; $n < $round; $n++){
echo $name_one[$n], "\n";
}
?>
output:
Looping using foreach:
Zack
Anthony
Ram
Salim
Raghav
The number of elements is 5
Looping using for:
ZACK
ANTHONY
RAM
SALIM
RAGHAV
关联数组
这些类型的数组与索引数组相似,但是不是线性存储,每个值可以分配用户定义的字符串类型的键。
示例:
<?php
// One way to create an associative array
$name_one = array("Zack"=>"Zara", "Anthony"=>"Any",
"Ram"=>"Rani", "Salim"=>"Sara",
"Raghav"=>"Ravina");
// Second way to create an associative array
$name_two["zack"] = "zara";
$name_two["anthony"] = "any";
$name_two["ram"] = "rani";
$name_two["salim"] = "sara";
$name_two["raghav"] = "ravina";
// Accessing the elements directly
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";
?>
output:
Accessing the elements directly:
zara
sara
any
Rani
Ravina
遍历关联数组:我们可以通过与遍历数字数组相似的方式,使用循环遍历关联数组。我们可以通过两种方式循环遍历关联数组。第一种是使用for循环,第二种是使用foreach循环。
<?php
// Creating an associative array
$name_one = array("Zack"=>"Zara", "Anthony"=>"Any",
"Ram"=>"Rani", "Salim"=>"Sara",
"Raghav"=>"Ravina");
// Looping through an array using foreach
echo "Looping using foreach: \n";
foreach ($name_one as $val => $val_value){
echo "Husband is ".$val." and Wife is ".$val_value."\n";
}
// Looping through an array using 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";
}
?>
output:
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
多维数组
多维数组是指每个索引存储另一个数组而不是单个元素。换句话说,我们可以将多维数组定义为数组的数组。顾名思义,此数组中的每个元素都可以是数组,并且它们还可以包含其他子数组。多维数组中的数组或子数组可以使用多个维度进行访问。
示例:
<?php
// Defining a multidimensional array
$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",
)
);
// Accessing elements
echo "Dave Punk email-id is: " . $favorites[0]["email"], "\n";
echo "John Flinch mobile number is: " . $favorites[2]["mob"];
?>
output:
Dave Punk email-id is: davepunk@gmail.com
John Flinch mobile number is: 9875147536
遍历多维数组:我们可以通过嵌套的方式使用for和foreach循环遍历多维数组。也就是说,一个for循环用于外层数组,一个for循环用于内层数组。
<?php
// Defining a multidimensional array
$favorites = array(
"Dave Punk" => array(
"mob" => "5689741523",
"email" => "davepunk@gmail.com",
),
"Dave Punk" => array(
"mob" => "2584369721",
"email" => "montysmith@gmail.com",
),
"John Flinch" => array(
"mob" => "9875147536",
"email" => "johnflinch@gmail.com",
)
);
// Using for and foreach in nested form
$keys = array_keys($favorites);
for($i = 0; $i < count($favorites); $i++) {
echo $keys[$i] . "\n";
foreach($favorites[$keys[$i]] as $key => $value) {
echo $key . " : " . $value . "\n";
}
echo "\n";
}
?>
output:
Dave Punk
mob : 2584369721
email : montysmith@gmail.com
John Flinch
mob : 9875147536
email : johnflinch@gmail.com