2016-07-23 52 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