2016-06-23 12 views
1

私は以下のような配列を持っており、null値のキーを削除して、それらをtestという名前の新しい配列記憶域に取り出したいとします。配列キーをPHPで設定解除します。

$array = array(
'6' => array(
    'null' =>array(
     'null'=>array(
       '11:04'=>array(
        'id' => '22' 
       ) 
     ) 
    ), 
    '1'=>array(
     '2'=>array(
       '11:04'=>array(
        'id' => '22' 
       ) 
     ) 
    ), 
) 
); 

これは私がこれまで行ってきたコードです:

foreach($array as $devp => $dev){ 
foreach($dev as $comp => $com){ 

if($comp == 'null'){ 
    unset($array[$devp][$comp]); 
} 
foreach($com as $areap=>$area){ 
    foreach($area as $timep=>$time){ 
    foreach($time as $k=> $v){ 
     $results[$devp][$comp][$areap][$timep]['active']= 'true'; 
    } 
    } 
} 
unset($array[$devp]['null']); 
} 

}

print_r($results); 

を私は$compがnullに等しい場合、それは設定が解除されますという条件を作成しましたnull $ compを持つ配列しかし、私がtest配列に置くと、それは動作しません。私は間違って何をしています。ありがとう。 https://eval.in/593908

+0

をあなたのコードにしますprint_r($配列)を追加し、その配列からキーが削除されていることがわかります。 –

+0

ええ、私は知っています。しかし、$ arrayの結果を$結果に適用する必要があります。 – useruseruser

+0

最終的なアレイの予想される出力がどのようになるかを実証できますか?あなたはおそらく再帰的なイテレータがあなたが望むことをすることを望むでしょう。 – Rasclatt

答えて

0

それはあなたの結果はどうあるべきか少しは不明だが、私はあなたが再帰的なイテレータが必要だと思う:

// Given this array 
$array = array(
    '6' => array(
     'null' =>array(
      'null'=>array(
       '11:04'=>array(
        'id' => '22' 
       ) 
      ) 
     ), 
     '1'=>array(
      '2'=>array(
       '11:04'=>array(
        'id' => '22' 
       ) 
      ) 
     ), 
     '3'=>array(
      'null'=>array(
       '11:04'=>array(
        'id' => '22' 
       ) 
      ) 
     ) 
    ) 
); 

// This is the iterator function 
function iterate($array,$find,&$new) 
    { 
     // Loop through array 
     foreach($array as $key => $value) { 
      // If the current key is the same as what you are looking for 
      if($key == $find) 
       // Assign to the new array 
       $new[] = $array[$key]; 
      // If the key is not the same 
      else { 
       // If the value is another array 
       if(is_array($value)) 
        // Use this function to drive down into the array 
        $return[$key] = iterate($value,$find,$new); 
       // If not array, assign the value 
       else 
        $return[$key] = $value; 
      } 
     } 
     // return the $return if set 
     if(isset($return)) 
      return $return; 
    } 

// Store null arrays 
$new = array(); 
// Create filtered array 
$newd = iterate($array,'null',$new); 

print_r($new); 
print_r($newd); 

あなたが与える:

Array 
(
    [0] => Array 
     (
      [null] => Array 
       (
        [11:04] => Array 
         (
          [id] => 22 
         ) 
       ) 
     ) 

    [1] => Array 
     (
      [11:04] => Array 
       (
        [id] => 22 
       ) 
     ) 
) 

Array 
(
    [6] => Array 
     (
      [1] => Array 
       (
        [2] => Array 
         (
          [11:04] => Array 
           (
            [id] => 22 
           ) 
         ) 
       ) 
      [3] => 
     )  
) 
関連する問題