3

私は次のような配列を持っています:

$arr = array(

  'abc' => array(
             'subkey1' => '',
             'subkey2' => false,             
             'subkey3' => 0,  
             ...                          
           ),

  'def' => array(
             'subkey1' => '',
             'subkey2' => 555,             
             'subkey3' => 0,  
             ...                          
           ),

  ...

);

0すべてのサブキーが、、、、などの空の値を持つすべての親要素の設定を解除したいと思い''ます。私の例では、設定を解除する必要があります。falsenullabc

現在、foreachループ内で各サブキーが空かどうかを手動でチェックしていますが、8つのサブキーがあるため、if条件は非常に大きくなります:)

これに代わるより良い方法はありますか?

4

2 に答える 2

7
$array = array_filter($array, 'array_filter');

コードパッドで出力を表示する

Array
(
    [def] => Array
        (
            [subkey1] => 
            [subkey2] => 555
            [subkey3] => 0
        )

)

外側のarray_filter()は配列をループし、各サブ配列で内側のarray_filter()を呼び出します。これにより、空のすべてのサブキーが削除されます。各サブキーが空の場合、外部のarray_filter()はサブ配列全体を削除する必要があります。

コールバックが指定されていない場合、FALSEに等しい入力のすべてのエントリ(ブール値への変換を参照)が削除されます。

于 2012-06-23T19:54:20.457 に答える
0

これはどう:

foreach ($arr as $index=>$element)
{
  if (in_array(0, $element))
  {
    unset($arr[$index]);
  }
}
于 2012-06-23T20:12:44.503 に答える