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

发表评论