PHP 数组
1.数组的创建
(1)创建数组使用array()方法
(2)数组分为索引数组和关联数组,前者使用下标访问数组元素,后者使用key访问
<?php
//使用array()方法创建索引数组
$arr = array(1,2,3);
//通过下标访问数组元素
echo $arr[0];
echo $arr[1];
echo $arr[2];
echo "<br>";
//创建关联数组
$arr2 = array(
"name"=> "kyo",
"age"=> 20,
);
//关联数组通过key访问数组元素
echo $arr2['name'];
echo $arr2['age'];
?>
2.数组长度
通过调用count()方法,传入数组来返回改数组的长度
<?php
//使用array()方法创建索引数组
$arr = array(1,2,3);
//获取数组长度
$length = count($arr);
echo "数组的长度为$length"; //3
echo "<br>";
//创建索引数组
$arr2 = array(
"name"=> "kyo",
"age"=> 20,
);
//获取数组长度
$length2 = count($arr2);
echo "数组的长度为$length2"; //2
?>
3.数组遍历
- for()循环配合下标来遍历索引数组
<?php
//使用array()方法创建索引数组
$arr = array(1,2,3);
//获取数组长度
$length = count($arr);
for($i=0;$i<$length;$i++){
echo $arr[$i];
echo "<br>";
};
?>
- foreach遍历数组
<?php
//使用array()方法创建索引数组
$arr = array(1,2,3);
//遍历索引数组
foreach($arr as $item){
echo $item;
echo "<br>";
};
echo "<br>";
//创建关联数组
$arr2 = array(
"name"=> "kyo",
"age"=> 20,
);
//遍历关联数组
foreach($arr2 as $key=>$key_val){
echo "$key:$key_val";
echo "<br>";
};
?>
4.php数组转换成json
php里面,索引数组的格式与json是一致的,但是关联数组就不一样,他更像是json中的对象,使用json_encode()可以将php数组转换成json格式
<?php
//使用array()方法创建索引数组
$arr = array(1,2,3);
echo json_encode($arr);
echo "<br>";
//创建关联数组
$arr2 = array(
"name"=> "kyo",
"age"=> 20,
);
echo json_encode($arr2);
echo "<br>";
//所谓二维数组
$arr3 = array(
array(
"name"=> "kyo",
"age"=> 20,
),
array(
"name"=> "orochi",
"age"=> 30,
)
);
echo json_encode($arr3);
?>
5.数组排序
- sort()对数组元素进行升序排列,会改变原数组,适用于索引数组
<?php
//纯数字数字
$arr = array(11,2,16);
sort($arr);
echo json_encode($arr); //[2,11,16]
echo "<br>";
//数字字符串数组
$arr2 = array('11','2','16');
sort($arr2);
echo json_encode($arr2); //["2","11","17"]
echo "<br>";
//字符串数组
$arr3 = array('a','h','A');
sort($arr3);
echo json_encode($arr3); //["A","a","h"]
echo "<br>";
//混合
$arr4 = array('c','a','5','1','3','C','A');
sort($arr4);
echo json_encode($arr4); //["1","3","5","A","C","a","c"]
echo "<br>";
?>
- rsort() - 对数组进行降序排列,用法同上,适用于索引数组
<?php
//纯数字数字
$arr = array(11,2,16);
rsort($arr);
echo json_encode($arr); //[16,11,2]
echo "<br>";
//数字字符串数组
$arr2 = array('11','2','16');
rsort($arr2);
echo json_encode($arr2); //["16","11","2"]
echo "<br>";
//字符串数组
$arr3 = array('a','h','A');
rsort($arr3);
echo json_encode($arr3); //["h","a","A"]
echo "<br>";
//混合
$arr4 = array('c','a','5','1','3','C','A');
rsort($arr4);
echo json_encode($arr4); //["c","a","C","A","5","3","1"]
echo "<br>";
?>
- asort()适用于关联数组,根据key对应的值来进行升序排序,arsort()为降序
<?php
$arr = array(
"name"=>'kyo',
"friend"=>"daimen",
"age"=> 21
);
asort($arr);
//会改变原数组 d < k < 2
print_r($arr);//Array ( [friend] => daimen [name] => kyo [age] => 21 )
?>
- ksort()适用于关联数组,根据key来进行升序排序,krsort()为降序
<?php
$arr = array(
"name"=>'kyo',
"friend"=>"daimen",
"age"=> 21
);
ksort($arr);
//会改变原数组 a < f < n
print_r($arr);//Array ( [age] => 21 [friend] => daimen [name] => kyo )
?>
6.数组元素添加与删除
- array_push()在数组的后面添加一个或多个元素
<?php
$arr = array(1,2,3,4);
array_push($arr,5,6);
print_r($arr); //array(1,2,3,4,5,6)
?>
- array_pop()删除数组中的最后一个元素
<?php
$arr = array(1,2,3,4);
array_pop($arr);
print_r($arr); //array(1,2,3)
?>
- array_shift()删除数组的第一个元素
<?php
$arr = array(1,2,3,4);
array_shift($arr);
print_r($arr); //array(2,3,4)
?>
- array_unshift()在数组的前面添加一个或多个元素
<?php
$arr = array(1,2,3,4);
array_unshift($arr,-1,0);
print_r($arr); //array(-1,0,1,2,3,4)
?>
- array_splice() 函数从数组中移除选定的元素,并用新元素取代它
参数 | 描述 |
---|---|
参数一 | 必需。规定数组 |
参数二 | 必需。数值。规定删除元素的开始位置,支持负数 |
参数三 | 可选。数值。规定被移除的元素个数,默认删除值数组最后一个元素 |
参数四 | 可选。要插入的元素 |
<?php
$arr = array(1,2,3,4);
array_splice($arr,2,1,6);
print_r($arr); //array(1,2,6,4)
?>
7.返回关联数组中所有的键名
array_keys()返回数组key组成的一个索引数组,适用于关联数组
PS:php中的数组类似于js中的对象,这个方法与js的Object.keys()效果一致
<?php
$arr = array(
"name"=>'kyo',
"friend"=>"daimen",
"age"=> 21
);
print_r(array_keys($arr));//Array ( [0] => name [1] => friend [2] => age )
?>
8.快捷遍历
虽然foreach循环可以遍历所有的数组,但是特定的应用场景中,一些方法更为方便。
以下的方法都有一个共同点:需要额外定义一个方法,来处理每个遍历时的逻辑
- array_map(fn,arr)映射,fn中的参数就是遍历时的数组元素,注意 fn 是字符串
<?php
$arr = array(1,2,3);
function double($item){
return $item*2;
};
//注意 fn 是字符串
print_r(array_map('double',$arr));//Array ( [0] => 2 [1] => 4 [2] => 6 )
?>
- array_filter(arr,fn)过滤,fn中的参数就是遍历时的数组元素,注意 fn 是字符串,且过滤出来的数组元素的下标使用的是旧的下标
<?php
$arr = array(1,2,3);
function test($item){
return $item>2;
};
//注意 fn 是字符串
print_r(array_filter($arr,'test'));//Array ( [2] => 3 )
?>
9.查找下标
- array_search() 函数在数组中搜索某个键值,并返回对应的键名。否则返回 FALSE
<?php
$arr = array(1,2,3,4);
$index = array_search(4,$arr);
print_r($index); //3
?>
10.查找元素
- in_array()搜索数组中是否存在指定的值
<?php
$arr = array(1,2,3,4);
$flag = in_array(4,$arr);
if($flag){
echo "数组存在 4 ";
}else{
echo "数组不存在 4 ";
}
?>