【问题标题】:Remove arrays that have a matching value from another array从另一个数组中删除具有匹配值的数组
【发布时间】:2016-03-10 13:21:28
【问题描述】:
  $arr = Array
  (
      [0] => Array
          (
              [PropertyID] => 11
          )
      [1] => Array
          (
              [PropertyID] => 22
          )
      [2] => Array
          (
              [PropertyID] => 33
          )
      [3] => Array
          (
              [PropertyID] => 44
          )
  )

  $excludeIDs = Array(22, 11, 44);

期望的结果:

  Array ( [0] => Array ( [PropertyID] => 33 ) )

我想排除 $excludeIDS 内包含匹配 PropertyID 的数组

我该怎么做?

【问题讨论】:

  • 循环遍历数组和unset,这不是必需的。
  • $merged = array_merge($arr, array(array('PropertyID' => 22), array('PropertyID' => 11), array('PropertyID' => 44))); $unique = array_map("unserialize", array_unique(array_map("serialize", $merged);

标签: php arrays multidimensional-array


【解决方案1】:

通过数组使用unset()

foreach($arr as $key => $value){
     if(in_array($value['PropertyID'], $excludeIDs)){
         unset($arr[$key]);
     }
}
$arr = array_values($arr);
print_r($arr);

输出:

Array
(
    [0] => Array
        (
            [PropertyID] => 33
        )    
)

【讨论】:

  • 你的键盘编码错误,初始数组是二维的,不是一维的!检查这个:codepad.org/EhHgQEMo
  • 哦,对不起,我没有看到多维数组我的错误
【解决方案2】:

试试这个:

<?php 
$excludeIDs = array(22, 11, 44);
$counter = 0;
foreach ($arr as $key => $value) {
    if (!in_array($value['PropertyID'], $excludeIDs)) {
        $result_array[$counter] = $value;
        $counter++;
    }

}
echo '<pre>';
print_r($result_array);
echo '</pre>';
?>

【讨论】:

  • 嘿,不错的尝试伙计!!!.. 请详细说明我的答案和你的答案之间的区别。你疯了吗
  • 哦,对不起,我没有看到多维数组我的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 2018-08-12
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多