arrays - PHP - 删除多维数组中的元素

标签 arrays multidimensional-array elements

我有这个数组:

Array ( 
[0] => Array ( [0] => b [1] => d [2] => **c** [3] =>a [4] => ) 

[1] => Array ( [0] => **c** [1] => a [2] => d [3] => [4] => ) 

[2] => Array ( [0] => b [1] => d [2] => a [3] => [4] => )

[3] => Array ( [0] => **c** [1] => d [2] => a [3] =>b [4] => )

)

并且需要删除(取消设置?)值为“c”的所有元素,以便最终得到:
Array ( 
[0] => Array ( **[0] => b [1] => d [2] => a [3] => [4] =>** ) 

[1] => Array ( **[0] => a [1] => d [2] => [3] =>** ) 

[2] => Array ( [0] => b [1] => d [2] => a [3] => [4] => )

[3] => Array ( **[0] => d [1] => a [2] =>b [3] =>** )

)

元素被移除,其他元素向上移动。我知道 unset 不会重新索引数组。无法取消所有多维数组的设置,但只能取消设置一个数组。之后可以重新索引数组吗?欣赏它。

下面的代码删除了值等于“c”但第一个元素的索引没有重新索引的元素。任何人都可以建议重新索引内部数组的解决方案吗?
$i=0;
foreach ($array as $val)
    {
    foreach ($val as $key => $final_val)
        { 

        if ($final_val =="$search_value") 
            {
             unset($array[$i][$key]);
            }
        } 
    i = $i + 1;
    }

最佳答案

以下代码将执行您想要的操作:

<?php
$a = 1;
$b = 2;
$c = 3;
$d = 4;

$arr = array(
array ( $b, $d, $c, $a, $b),
array ($c, $a),
array ( $b, $d,  $c ),
array( $c, $d, $a, $b, $b)
);
echo "before:\n";
print_r($arr);

foreach($arr as $k1=>$q) {
  foreach($q as $k2=>$r) {
    if($r == $c) {
      unset($arr[$k1][$k2]);
    }
  }
}
echo "after:\n";
print_r($arr);
?>

输出:
before:
Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 3
            [3] => 1
            [4] => 2
        )

    [1] => Array
        (
            [0] => 3
            [1] => 1
        )

    [2] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 3
        )

    [3] => Array
        (
            [0] => 3
            [1] => 4
            [2] => 1
            [3] => 2
            [4] => 2
        )

)
after:
Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 4
            [3] => 1
            [4] => 2
        )

    [1] => Array
        (
            [1] => 1
        )

    [2] => Array
        (
            [0] => 2
            [1] => 4
        )

    [3] => Array
        (
            [1] => 4
            [2] => 1
            [3] => 2
            [4] => 2
        )

)

如您所见,所有 3已经走了...

关于arrays - PHP - 删除多维数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21249041/

相关文章:

zooming - 在放大的散点图中获取区域或元素

java - 比较java中同一个数组的元素

来自两个数组的 Python linspace 限制

javascript - AngularJS ng-repeat 带过滤器的数组

c - 如何在函数内 malloc 结构体数组?代码以其他方式工作

php - 使用来自另一个二维关联数组的多个级别的键过滤二维关联数组

javascript - 将 DIV 元素移动到父元素的底部(作为最后一个子元素)

java - 将 Double 转换为 ArrayList - Android

php - 将复杂的多维数据从 API 保存到数据库中

javascript - Vue.js 从数组中弹出一个嵌套对象