2016-07-23 33 views
0

我有下面的數組,我從Db檢索,現在如果任何這個數組元素沒有值我想刪除數組元素並重新索引數組,我試着貝代碼,但沒有奏效如何刪除數組元素與空值在PHP

array name is $photo 
    Array 
    (
    [0] => Array 
     (
      [photo1] => uploads/_cgL-CMy7JVHxds.jpg 
      [photo2] => 
      [photo3] => uploads/_cgL-CMy7JVHxds.jpg 
      [photo4] => 
      [photo5] => 
      [photo6] => uploads/_cgL-CMy7JVHxds.jpg 
      [photo7] => 
      [photo8] => 
      [photo9] => 
      [photo10] => 
      [photo11] => 
      [photo12] => 
      [photo13] => 
      [photo14] => 
      [photo15] => 
      [photo16] => 
      [photo17] => 
      [photo18] => 
      [photo19] => 
      [photo20] => 
     ) 

    ) 

我想這個代碼

foreach ($photo as $key => $value) { 
     if(array_key_exists($key, $photo) && is_null($photo[$key])) { 
      unset($photo[$key]); 
     } 

我希望我的結果是這樣的

$photo =([photo1]=>uploads/_cgL-CMy7JVHxds.jpg 
      [photo3]=>uploads/_cgL-CMy7JVHxds.jpg 
      [photo6]=>uploads/_cgL-CMy7JVHxds.jpg); 

此感謝任何幫助

回答

0

在所有的空值,因爲它是在一個數組的數組,你仍然至少需要一個循環,所以你可以使用該代碼並使用array_filter對其進行擴展。只有array_filter不能正常工作。

<?php 

$var = [ 
    [ 
     'photo1' => 'uploads/_cgL-CMy7JVHxds.jpg', 
     'photo2' => null, 
     'photo3' => 'uploads/_cgL-CMy7JVHxds.jpg', 
     'photo4' => null, 
     'photo5' => null, 
     'photo6' => 'uploads/_cgL-CMy7JVHxds.jpg', 
     'photo7' => null, 
     'photo8' => null, 
     'photo9' => null, 
     'photo10' => null, 
     'photo11' => null, 
     'photo12' => null, 
     'photo13' => null, 
     'photo14' => null, 
     'photo15' => null, 
     'photo16' => null, 
     'photo17' => null, 
     'photo18' => null, 
     'photo19' => null, 
     'photo20' => null, 
    ], 
]; 

foreach ($var as $key => $photos) { 
    foreach ($photos as $photoId => $path) { 
     if (empty($path)) { 
      unset ($var[$key][$photoId]); 
     } 
    } 
} 
var_dump($var); 
+0

基督徒真的非常感謝你,你已經救了我的天,我只能通過陣列嘗試一次循環,還可以使用array_filter,但你的代碼工作得如此完美 – sam

+0

array_filter可能會更快,但在這一點上它有點像微型優化... – Christian

0

你不需要那麼 有

array_filter() 

這將取消設置你的陣列manual

0
print_r(array_filter($photo));  
+0

雖然這段代碼可以解決這個問題,[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers )真的有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要使用解釋性註釋來擠佔代碼,因爲這會降低代碼和解釋的可讀性! – FrankerZ