2017-10-26 7 views
0

マルチプレイ配列をそれぞれ比較するソリューションを探していますが、キーが空であればすべての配列で設定を解除します。たとえば、[keywords]が空の場合、すべての配列[キーワード]で設定を解除します。ここで私はprint_rの配列です。私がこれまで試してみました何PHPは配列を比較し、配列内のキーがすべて空であればクリアする

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [pid] => 3 
      [sorting] => 128 
      [tstamp] => 1503039725 
      [title] => test 
      [alias] => test-3 
      [author] => 1 
      [inColumn] => main 
      [keywords] => 
      [showTeaser] => 
      [teaserCssID] => 
      [teaser] => 
      [printable] => 
      [customTpl] => 
      [protected] => 
      [groups] => 
      [guests] => 
      [cssID] => 
      [space] => 
      [published] => 1 
      [start] => 
      [stop] => 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [pid] => 3 
      [sorting] => 256 
      [tstamp] => 1503045056 
      [title] => test 2 
      [alias] => test-2 
      [author] => 1 
      [inColumn] => main 
      [keywords] => 
      [showTeaser] => 
      [teaserCssID] => a:2:{i:0;s:0:"";i:1;s:0:"";} 
      [teaser] => 
      [printable] => 
      [customTpl] => 
      [protected] => 
      [groups] => 
      [guests] => 
      [cssID] => a:2:{i:0;s:0:"";i:1;s:0:"";} 
      [space] => a:2:{i:0;s:0:"";i:1;s:0:"";} 
      [published] => 1 
      [start] => 
      [stop] => 
     ) 

) 

は値を持つキーを含む配列を構築

print_r($arrResult); 

    foreach($arrResult as $Result) 
     { 
      foreach ($Result as $arrKey => $arrField) 
      { 
       if(!empty($arrField)) 
       { 
        $arrAllowedField[$arrKey] = $arrKey; 
       } 
      } 
     } 

です。しかし問題は、他の配列の空のフィールドも追加するということです。

おかげ

+1

期待どおりの結果を追加できますか?あなたのコードがうまくいけば、何を作るべきですか?それは今何を生産していますか? –

答えて

0

それは、配列

$arrResult = array_map('array_filter', $arrResult); 
$arrResult = array_filter($arrResult); 

echo "<pre>"; 
print_r($arrResult); 

出力

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [pid] => 3 
      [sorting] => 128 
      [tstamp] => 1503039725 
      [title] => test 
      [alias] => test-3 
      [author] => 1 
      [inColumn] => main 
      [published] => 1 
     ) 

) 
1
// remove empty entries in each array 
$ar = array_map('array_filter', $ar); 
// find keys having not empty value at least in one array 
$temp = array_intersect_key(...$ar); 
// save only keys from temp array 
foreach($ar as &$item) { 
    $item = array_intersect_key($item, $temp); 
} 

demo

からのすべての空の値を削除します
関連する問題