php二维数组操作
文章描述:
php二维数组是常见的数据储存方式,下面就向大家介绍一哈如何对二维数组储存、循环、查询、替换、去重、删除操作。
目录:
- 1.二维数组储存
- 2.二维数组读取
- 3.二维数组查找
- 4.二维数组里面追加数据
- 5.二维数组替换值
- 6.二维数组输出指定位置的值
- 7.二维数组去重
- 8.二维数组删除某个值
存储
二维数组储存
如何定义一个php二维数组,在二维数组里面储存键和值,值有name和enname。
$str = array();
$str = array(
array('name'=>'电脑','enname'=>'computer'),
array('name'=>'手机','enname'=>'phone'),
array('name'=>'手表','enname'=>'watch'),
array('name'=>'钢笔','enname'=>'pen'),
array('name'=>'电脑','enname'=>'computer'),
);
读取
二维数组读取
foreach
使用foreach循序二维数组里面的键和值,然后输出。
foreach($str as $key=>$val){
echo $key." - ".$val['name']."<br/>";
}
0 – 电脑
1 – 手机
2 – 手表
3 – 钢笔
4 – 电脑
array_column
获取二维数组下某个指定键值,提取二位数组里面的name
$str = array_column($str, 'name');
Array ( [0] => 电脑 [1] => 手机 [2] => 手表 [3] => 钢笔 [4] => 电脑 )
查找
二维数组查找
array_search
在数组中搜索键值 “手机”,并返回它的键名:
echo $found_key = array_search('手机', array_column($str, 'name'));
1
自定义一个方法,里面用foreach循环判断来查找,如果不存在继续循环,如果存在返回true,不存在返回false
$res = deep_in_array('手机', $str);
echo $res;
function deep_in_array($value, $array) {
foreach($array as $item) {
if(!is_array($item)) {
if ($item == $value) {
return true;
} else {
continue;
}
}
if(in_array($value, $item)) {
return true;
} else if(deep_in_array($value, $item)) {
return true;
}
}
return false;
}
新增
二维数组里面追加数据
array_unshift
新数组的值将被插入到数组的开头
$add_first = array('name'=>'鼠标','enname'=>'mouse');
array_unshift($str,$add_first);
array_push
新数组的值将被插入到数组的尾部
$add_last = array('name'=>'鼠标','enname'=>'mouse');
array_push($str,$add_last);
print_r($str);
也可以自定义在尾部插入数组数据
$count = count($str);
foreach($str as $key=>$val) {
if ($key == $count - 1) {
$str[] = array(
'name'=>'键盘','enname'=>'keyboard'
);
}
}
print_r($str);
替换
二维数组替换值
二维数组替换值,可以用key来作为条件来替换里面的值
$str[4] = array('name'=>'键盘','enname'=>'keyboard');
二维数组输出指定位置的值
echo $str[1]['name'];
去重
二维数组去重
array_unique
去掉重复数据的数组
$str = array_unique( $str );
array_diff_assoc
获取重复数据的数组
$str1 = array_unique( $str );
$repeat_arr = array_diff_assoc ( $str, $str1 );
使用foreach循环in_array判断是否存在去重
$out = array();
foreach ($str as $k=>$v) {
if (!in_array($v, $out)){
$out[$k] = $v;
}
}
$out = array_values($out);
print_r($out);
根据字段去重复
foreach($str as $k=>$v){
if(isset($out[$v['name']])){
unset($str[$k]);
}else{
$out[$v['name']] = $v;
}
}
print_r($out);
删除
二维数组删除某个值
unset()
unset()函数删除的话,数组的索引值没有变化。
unset($str[3]);
发布时间:2021/08/06
发表评论