【问题标题】:2-dimensional Array - unset if not value二维数组 - 如果不是值则未设置
【发布时间】:2014-03-22 04:03:23
【问题描述】:

我有一个二维数组,想删除所有值不是“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
    ....
)

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

【问题讨论】:

    标签: php arrays multidimensional-array unset


    【解决方案1】:

    它们都没有工作..

    我自己找到了解决方案:

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

    【讨论】:

      【解决方案2】:
      foreach($array as $key => $value) {
      
          foreach ($value as $string) {
      
              if ($string !== "Name1") {
                  unset($string);
              }
          }
      }
      

      【讨论】:

        【解决方案3】:

        试试这个:

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

        【讨论】:

          【解决方案4】:
          foreach($array as $key1 => $val1) {
              foreach($val1 as $key2 => $val2) {
                  if(strcmp($val2,"Name1") != 0) {
                      unset($array[$key1][$key2]);
                  }
              }
          }
          

          【讨论】:

          • 不幸的是不工作,看看我自己找到的解决方案;)Fatal error: Cannot unset string offsets
          • 你的代码和我的一样,只是使用了不同的字符串比较。
          • 对不起,是的,你是对的,我不知道是什么导致了错误;)还是谢谢!
          猜你喜欢
          • 1970-01-01
          • 2021-08-08
          • 2017-12-07
          • 1970-01-01
          • 2020-02-14
          • 2013-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多