二维数组 - 如果不是值,则取消设置

时间:2014-02-20 22:16:42

标签: php arrays multidimensional-array unset

我有一个二维数组,想删除所有元素,其值不是“Name1”。他们应该保留他们的索引号(键):

Array
(
    [array001] => Array
        (
            [0] => Name1
            [1] => Name2
            [2] => Name3
            [3] => Name1
        )

    [array002] => Array
        (
            [0] => Name2
            [1] => Name1
            [2] => Name4
        )
    [array003] => Array
    ....
)

将输出

Array
(
    [array001] => Array
        (
            [0] => Name1
            [3] => Name1
        )

    [array002] => Array
        (
            [1] => Name1
        )
    [array003] => Array
    ....
)

当数组转换为字符串时,可以使用带有preg_replace的foreach循环实现可能的解决方案:$array = print_r($array,true);

4 个答案:

答案 0 :(得分:1)

他们都没有工作..

我自己找到了解决方案:

foreach($array as $key => $value) {
  foreach($value as $innerkey => $innervalue){
    if($innervalue != 'Name1'){
      unset($array[$key][$innerkey]);
    }
  }
}

答案 1 :(得分:0)

foreach($array as $key => $value) {

    foreach ($value as $string) {

        if ($string !== "Name1") {
            unset($string);
        }
    }
}

答案 2 :(得分:0)

试试这个:

function removeElementDifferentValue($array, $value){
     foreach($array as $subKey => $val){
          if($val != $value){
               unset($array[$subKey]);
          }
     }
     return $array;
}

$array = removeElementWithValue($array, 'Name1');

答案 3 :(得分:0)

foreach($array as $key1 => $val1) {
    foreach($val1 as $key2 => $val2) {
        if(strcmp($val2,"Name1") != 0) {
            unset($array[$key1][$key2]);
        }
    }
}