? ? ? eg: 25? ? ? ?47? ? ? ?289? ? 38? ? 93? ? ?----> 值
? ? ? ? ? ? 0? ? ? ? ? 1? ? ? ? ?2? ? ? ? 3? ? ? 4? ? ?-----> 键
<?php
$arr = [
'上午好',
'下午好',
'晚上好',
];
echo $arr[0] ;
echo '<hr>' ;
echo $arr[1] ;
echo '<hr>' ;
echo $arr[2] ;
echo '<hr>' ;
?>
?
? ? ? ?如上代码,创建了数组$arr,键 0 对应的是字符串'上午好',以此类推。
? ? ? ? eg:[id]? ? ? ? ?[name]? ? ?[gender]? ? ?[tel]? ? ------> 键
? ? ? ? ? ? ? ? 10? ? ? ? ? Tom? ? ? ? ? 男? ? ? ? ? ? ?1881808932? -------> 值
<?php
$age = array("Peter"=>"35","Ben"=>"37","Joe"=>"43") ;
echo "Peter is" . $age['Peter'] ."years old." ;
?>
? ? ?
? ? ? ? ? ? ? $fruits = array('pear','strawberry','pitaya'); ---->省略键名
? ? ? ? ? ? ? ?$sports = array(3 =>'badminton',5 =>'riding');---->指定键名
<?php
$fruits = array('apple', 'grape', 'pear');
echo $fruits[0];
echo '<hr>';
echo $fruits[1];
echo '<hr>';
echo $fruits[2];
echo '<hr>';
?>
<?php
$sports = array(2 => 'basketball', 4 => 'swimming');
echo $sports[2];
echo '<hr>';
echo $sports[4];
echo '<hr>';
?>
? ? ? ? $info = array('id' =>18,'name' =>'Tom','tel' =>18723923);
<?php
$info = array('id' => 10, 'name' => 'Tom', 'tel' => 18810888188);
echo $info['id'];
echo '<hr>';
echo $info['name'];
echo '<hr>';
echo $info['tel'];
echo '<hr>';
?>
? ? 注:键只能是整型或字符串型的数据,如果是其他类型,则会执行类型自动转换;
合法整型的字符串会被转为整型,如“2”转为2,而“02”则不会被转换,因为其不是一个合法的十进制数值;
浮点数会被舍去小数部分直接转换成整型,如2.6转为2 布尔类型的true会被转为1,false转为0;
NULL类型会被转为空字符串‘ ’ ;
若数组中存在相同键名的元素时,后面的元素会覆盖前面元素的值
? ?$mi = array(2,'str','id' => 5 ,6 => 'd' ,'x');
? ?echo $mi['6'];
注:最大数字键名后若有索引元素,则会根据最大数字键名往后赋予键值。
? ? eg:?
$data = array(
0 => array('name' => 'Tom', 'gender' => '男'),
1 => array('name' => 'Lucy', 'gender' => '女'),
2 => array('name' => 'Jimmy', 'gender' => '男')
);
$arr[] = 123; // 存储结果:$arr[0] = 123
$arr[] = 'hello'; // 存储结果:$arr[1] = 'hello'
$arr[4] = 'PHP'; // 存储结果:$arr[4] = 'PHP'
$arr['name'] = 'Tom'; // 存储结果:$arr['name'] = 'Tom'
$arr[] = 'Java'; // 存储结果:$arr[5] = 'Java'
? 需要注意的是,赋值定义数组是单独为数组元素赋值,无法给空数组定义。
? ? 短数组定义法与 array() 语言结构相同,把array()替换为 [] 即可。
// 相当于: array('wind', 'fine')
$weather = ['wind', 'fine'];
// 相当于:array('id' => 12, 'name' => 'PHP')
$object = ['id' => 12, 'name' => 'PHP'];
// 相当于:array(array(1, 3), array(2, 4))
$num = [[1, 3], [2, 4]];
<?php
$sub = ['PHP', 'Java', 'C', 'Android'];
$data = ['goods' => 'clothes', 'num' => 49.90, 'sales' => 500];
echo $sub[1]; // 输出结果:Java
echo '<br/>';
echo $sub[3]; // 输出结果:Android
echo '<br/>';
echo $data['goods']; // 输出结果:clothes
echo '<br/>';
echo $data['sales']; // 输出结果:500
?>
? ?另外,若要一次查看数组中所有元素,可使用 print_r()? 和? var_dump()。
<?php
$sub = ['PHP', 'Java', 'C', 'Android'];
$data = ['goods' => 'clothes', 'num' => 49.90, 'sales' => 500];
echo '<pre>'; //保留标签内文本的空格和换行
print_r($sub); // print_r()函数打印数组变量$sub
var_dump($data); // var_dump()函数打印数组变量$data
echo '</pre>';
// print_r()打印结果
Array
(
[0] => PHP
[1] => Java
[2] => C
[3] => Android
)
// var_dump()打印结果
D:\phpstudy_pro\WWW\lesson03\test03.php:6:
array (size=3)
'goods' => string 'clothes' (length=7)
'num' => float 49.9
'sales' => int 500
?>
<?php
$arr = ['PHP', 'Python', 'C', 'Java'];
$arr_len=count($arr);
for($i=0;$i<$arr_len;$i++){
echo $arr[$i];
echo "<br/>";
}
?>
foreach ($array as $value){
循环体 ;
}
foreach ($array as $key => $value){
循环体 ;
}
//$array 表示数组 as $key 表示键 $value 表示值
eg:
<?php
$student = array(
"姓名" => "lucy",
"年龄" => 18,
"学科" => "PHP编程基础"
);
foreach ($student as $value) {
echo "Value: " . $value . "<br/>";
}
?>
<?php
$student = array(
"姓名" => "lucy",
"年龄" => 18,
"学科" => "PHP编程基础"
);
foreach ($student as $key => $value) {
echo "Key: " . $key . ", Value: " . $value . "<br/>";
}
?>
运算符 | 含义 | 示例 | 说明 |
+ | 联合 | $a + $b | $a和$b的联合 |
== | 相等 | $a==$b | 如果$a和$b具有相同的键值对则为true |
=== | 全等 | $a===$b | 如果$a和$b具有相同的键值对并且顺序和类型都相同则为true |
!= | 不等 | $a!=$b | 如果$a不等于$b则为true |
<> | 不等 | $a<>$b | 如果$a不等于$b则为true |
!== | 不全等 | $a!==$b | 如果$a不全等于$b则为true |
<?php
# 1. + 操作符:将两个数组合并,如果有相同的键名,则保留第一个数组中的值。
$array1 = array("a" => "apple", "b" => "banana");
$array2 = array("b" => "blueberry", "c" => "cherry");
$result = $array1 + $array2;
print_r($result); // 输出:Array ( [a] => apple [b] => banana [c] => cherry )
echo '<hr/>';
# 2. == 操作符:判断两个数组是否相等,即键名和键值都相等。
$array1 = array("a" => "apple", "b" => "banana");
$array2 = array("b" => "banana", "a" => "apple");
if ($array1 == $array2) {
echo "两个数组相等";
} else {
echo "两个数组不相等";
}
echo '<hr/>';
// 输出:两个数组相等
# 3. === 操作符:判断两个数组是否完全相同,即键名和键值都相等,并且键名的顺序也相同。
$array1 = array("a" => "apple", "b" => "banana");
$array2 = array("b" => "banana", "a" => "apple");
if ($array1 === $array2) {
echo "两个数组完全相同";
} else {
echo "两个数组不完全相同";
}
echo '<hr/>';
// 输出:两个数组不完全相同
# 4. != 或 <> 操作符:判断两个数组是否不相等,即键名或键值有一个不相等即可。
$array1 = array("a" => "apple", "b" => "banana");
$array2 = array("b" => "blueberry", "c" => "cherry");
if ($array1 != $array2) {
echo "两个数组不相等";
} else {
echo "两个数组相等";
}
echo '<hr/>';
// 输出:两个数组不相等
# 5. !== 操作符:判断两个数组是否不完全相同,即键名或键值有一个不相等,或者键名的顺序不相同即可。
$array1 = array("a" => "apple", "b" => "banana");
$array2 = array("b" => "banana", "a" => "apple");
if ($array1 !== $array2) {
echo "两个数组不完全相同";
} else {
echo "两个数组完全相同";
}
// 输出:两个数组不完全相同
?>
?eg:
??
<?php
$num = [2, 4];
$alp = ['a', 'b', 'c'];
$mer1 = $num + $alp;
$mer2 = $alp + $num;
print_r($mer1);
echo '<hr>';
print_r($mer2);
?>
? ?eg:
? ?
<?php
$a=['id','name','email','age'];
$b=['1','小马','253166555@qq.com','20'];
$c=array_combine($a,$b);
print_r($c);
?>
? ? ? ? ? ? ? ? ? ?语法:array_push($array,value)
? ? eg:
? ?
<?php
$a=array("red","green");
array_push($a,"blue","yellow");
print_r($a);
?>
? ? ? ? ? ? ? 语法:
<?php
// 销毁单个数组元素
unset ($bar['quux']);
// 销毁单个变量
unset ($foo);
// 销毁一个以上的变量
unset($foo1, $foo2, $foo3);
?>
? ? ?例如:
? ?
<?php
$foo1=array("渗透测试基础","操作系统","数据库基础","web安全基础","网络基础");
$foo2=array("渗透测试基础","操作系统","数据库基础","web安全基础","网络基础");
$foo3=array("渗透测试基础","操作系统","数据库基础","web安全基础","网络基础");
// 销毁单个数组元素
unset ($foo1[0]);
var_dump($foo1);
echo "<hr/>";
// 销毁单个变量
unset ($foo2);
var_dump($foo2);
echo "<hr/>";
// 销毁一个以上的变量
unset($foo1, $foo3);
var_dump($foo1,$foo2,$foo3);
?>
<?php
$array = array(0 => "a", 1 => "b", 2 => "c");
unset($array[1]);
//↑ 你要删除的数组元素值的键
print_r($array);
echo "<hr/>";
$array = array_values($array);//删除元素后的数组重新索引
print_r($array);
?>
? ?
<?php
$a1=array("red","green");
$a2=array("blue","yellow");
var_dump($a1);
echo '<br>';
var_dump(array_replace($a1,$a2));
?>
?
<?php
$arr=array(11,22,33,44);
print_r($arr);
echo "<hr/>";
$arr[0]=66; //数组变为$arr=array(66,22,33,44);;
print_r($arr);
?>
? ?例如:
? ?
<?php
$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_search("red",$a);
?>
? ?例如:
? ??
<?php
$arr=array(666,233,145,990,886,-1);
if(in_array(990,$arr)){
echo "存在该值";
}else{
echo "查无此数";
}
?>
??
函数名称 | 描述 |
array_pop() | 将数组最后一个元素弹出(出栈) |
array_push() | 将一个或多个元素压入数组末尾(入栈) |
array_unshift() | 在数组开头插入一个或多个元素 |
array_shift() | 将数组开头元素移出数组 |
array_unique() | 将数组中重复的值移出 |
array_slice() | 从数组中截取部分数组 |
array_splice() | 将数组中的一部分元素去掉并用其他值取代 |
? ? 例如:
? ??
<?php
# 1. array_pop():从数组末尾删除并返回最后一个元素。
$arr = array('one', 'two', 'three');
$lastElement = array_pop($arr);
echo $lastElement; // 输出:three
echo "<hr/>";
# 2. array_push():将一个或多个元素添加到数组末尾。
$arr = array('one', 'two');
array_push($arr, 'three', 'four');
print_r($arr); // 输出:Array ( [0] => one [1] => two [2] => three [3] => four )
echo "<hr/>";
# 3. array_unshift():将一个或多个元素添加到数组开头。
$arr = array('two', 'three');
array_unshift($arr, 'one');
print_r($arr); // 输出:Array ( [0] => one [1] => two [2] => three )
echo "<hr/>";
# 4. array_shift():从数组开头删除并返回第一个元素。
$arr = array('one', 'two', 'three');
$firstElement = array_shift($arr);
echo $firstElement; // 输出:one
echo "<hr/>";
# 5. array_unique():移除数组中重复的值,并返回新的数组。
$arr = array('one', 'two', 'two', 'three');
$uniqueArr = array_unique($arr);
print_r($uniqueArr); // 输出:Array ( [0] => one [1] => two [3] => three )
echo "<hr/>";
# 6. array_slice():从数组中取出一段元素。
$arr = array('one', 'two', 'three', 'four', 'five');
$slicedArr = array_slice($arr, 1, 3);
print_r($slicedArr); // 输出:Array ( [0] => two [1] => three [2] => four )
echo "<hr/>";
# 7. array_splice():从数组中移除或替换一段元素,并将被移除的元素替换为新的元素。
$arr = array('one', 'two', 'three', 'four', 'five');
$removedArr = array_splice($arr, 1, 2, array('new'));
print_r($arr); // 输出:Array ( [0] => one [1] => new [2] => four [3] => five )
echo "<br/>";
print_r($removedArr); // 输出:Array ( [0] => two [1] => three )
?>
?例如:
??
<?php
$arr = ['puff', 'Tiramisu'];
array_pop($arr); // 移出数组最后一个元素
print_r($arr); // 输出结果:Array ( [0] => puff )
array_push($arr, 'cookie'); // 在数组末尾添加元素
print_r($arr); // 输出结果:Array ( [0] => puff [1] => cookie )
array_unshift($arr, 22, 33);// 在数组开头插入多个元素
print_r($arr); // 输出结果: Array ( [0] => 22 [1] => 33 [2] => puff [3] => cookie )
array_shift($arr); // 移出数组第一个元素
print_r($arr); // 输出结果:Array ( [0] => 33 [1] => puff [2] => cookie )
?>
? ?
函数名称 | 描述 |
in_array() | 检查数组中是否存在某个值 |
array_search() | 在数组中搜素给定的值,如果成功则返回相应的键名 |
array_key_exists() | 检查给定的键名是否存在于数组中 |
? ?例如:
? ?
<?php
# 1. in_array()函数用于检查一个值是否存在于数组中。
$fruits = array("apple", "banana", "orange");
if(in_array("banana", $fruits)){
echo "存在";
} else {
echo "不存在";
}
echo '<hr/>';
# 2. array_search()函数用于在数组中搜索给定的值,并返回对应的键名。
$fruits = array("apple", "banana", "orange");
$key = array_search("banana", $fruits);
if ($key !== false) {
echo "key: " . $key;
} else {
echo "不存在";
}
echo '<hr/>';
# 3. array_key_exists()函数用于检查一个数组中是否存在指定的键名。
$fruits = array("apple" => 1, "banana" => 2, "orange" => 3);
if (array_key_exists("banana", $fruits)) {
echo "存在";
} else {
echo "不存在";
}
echo '<hr/>';
?>
??
<?php
$data = ['a' => 1, 'b' => 2, 'c' => 3];
var_dump(in_array(2, $data)); // 输出结果:bool(true)
var_dump(array_search(2, $data)); // 输出结果:string(1) "b"
var_dump(array_key_exists(2, $data)); // 输出结果:bool(false)
?>
?
函数名称 | 描述 |
count() | 计算数组中的元素数目或对象中的属性个数 |
range() | 建立一个包含指定范围元素的数组 |
array_rand() | 从数组中随机取出一个或多个元素 |
array_keys() | 获取数组中部分或所有的键名 |
array_values() | 获取数组中所有的值 |
array_column() | 获取数组中指定的一列 |
array_sum() | 计算数组中所有值的和 |
array_reverse() | 返回一个元素顺序相反的数组 |
? ? ?例如:
? ? ?
<?php
# 1. count()函数用于返回数组中元素的个数。
$array = [1, 2, 3, 4, 5];
$count = count($array);
echo $count; // 输出:5
echo '<hr/>';
# 2. range()函数用于创建一个包含指定范围内元素的数组。
$numbers = range(1, 5);
print_r($numbers); // 输出:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
echo '<hr/>';
# 3. array_rand()函数用于从数组中随机选择一个或多个键。
$colors = ['red', 'green', 'blue', 'yellow'];
$randomKey = array_rand($colors);
echo $colors[$randomKey]; // 输出:随机选择的颜色
echo '<hr/>';
# 4. array_keys()函数用于返回数组中所有的键名。
$fruits = ['apple' => 'red', 'banana' => 'yellow', 'orange' => 'orange'];
$keys = array_keys($fruits);
print_r($keys); // 输出:Array ( [0] => apple [1] => banana [2] => orange )
echo '<hr/>';
# 5. array_values()函数用于返回数组中所有的值。
$fruits = ['apple' => 'red', 'banana' => 'yellow', 'orange' => 'orange'];
$values = array_values($fruits);
print_r($values); // 输出:Array ( [0] => red [1] => yellow [2] => orange )
echo '<hr/>';
# 6. array_column()函数用于返回数组中指定的一列。
$students = [
['name' => 'John', 'age' => 20],
['name' => 'Jane', 'age' => 22],
['name' => 'Tom', 'age' => 21]
];
$names = array_column($students, 'name');
print_r($names); // 输出:Array ( [0] => John [1] => Jane [2] => Tom )
echo '<hr/>';
# 7. array_sum()函数用于计算数组中所有值的和。
$numbers = [1, 2, 3, 4, 5];
$sum = array_sum($numbers);
echo $sum; // 输出:15
echo '<hr/>';
# 8. array_reverse()函数用于将数组中的元素顺序反转。
$numbers = [1, 2, 3, 4, 5];
$reversed = array_reverse($numbers);
print_r($reversed); // 输出:Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )
?>
? ? ? ?
函数名称 | 描述 |
array_merge() | 合并一个或多个数组 |
array_flip() | 交换数组中的键和值 |
array_combine() | 创建数组,用一个数组的值作为其键名,另一个数组的值作为值 |
array_chunk() | 将一个数组分割成多个 |
array_fill() | 用给定的值填充数组 |
array_replace() | 使用传递的数组替换第一个数组的元素 |
array_map() | 为数组中的每个元素应用回调函数 |
array_walk() | 使用自定义函数对数组中的每个元素做回调处理 |
? ?例如:
? ?
<?php
# 1. array_merge(): 将一个或多个数组合并为一个数组。
$array1 = array('red', 'green');
$array2 = array('blue', 'yellow');
$result = array_merge($array1, $array2);
print_r($result); // 输出:Array ( [0] => red [1] => green [2] => blue [3] => yellow )
echo '<hr/>';
# 2. array_flip(): 交换数组中的键和值。
$array = array('a' => 1, 'b' => 2, 'c' => 3);
$result = array_flip($array);
print_r($result); // 输出:Array ( [1] => a [2] => b [3] => c )
echo '<hr/>';
# 3. array_combine(): 创建一个新数组,使用一个数组的值作为键名,另一个数组的值作为键值。
$keys = array('a', 'b', 'c');
$values = array(1, 2, 3);
$result = array_combine($keys, $values);
print_r($result); // 输出:Array ( [a] => 1 [b] => 2 [c] => 3 )
echo '<hr/>';
# 4. array_chunk(): 将一个数组分割成多个数组,每个数组包含指定数量的元素。
$array = array('a', 'b', 'c', 'd', 'e');
$result = array_chunk($array, 2);
print_r($result); // 输出:Array ( [0] => Array ( [0] => a [1] => b ) [1] => Array ( [0] => c [1] => d ) [2] => Array ( [0] => e ) )
echo '<hr/>';
# 5. array_fill(): 用给定的值填充数组。
$result = array_fill(0, 3, 'apple');
print_r($result); // 输出:Array ( [0] => apple [1] => apple [2] => apple )
echo '<hr/>';
# 6. array_replace(): 使用后面数组的值替换第一个数组的值。
$array1 = array('a' => 1, 'b' => 2);
$array2 = array('b' => 3, 'c' => 4);
$result = array_replace($array1, $array2);
print_r($result); // 输出:Array ( [a] => 1 [b] => 3 [c] => 4 )
echo '<hr/>';
# 7. array_map(): 将回调函数作用到给定数组的每个元素上,并返回一个新的数组。
$array = array(1, 2, 3);
$result = array_map(function($value) {
return $value * 2;
}, $array);
print_r($result); // 输出:Array ( [0] => 2 [1] => 4 [2] => 6 )
echo '<hr/>';
# 8. array_walk(): 对数组中的每个元素应用用户自定义的函数。
$array = array('a' => 1, 'b' => 2, 'c' => 3);
array_walk($array, function(&$value, $key) {
$value = $value * 2;
});
print_r($array); // 输出:Array ( [a] => 2 [b] => 4 [c] => 6 )
?>