如何在PHP中删除具有Null值的数组元素

时间:2016-07-23 14:13:54

标签: php arrays

我有以下从Db检索的数组,现在如果任何这个数组元素没有值我想删除数组元素并重新索引数组,我尝试beow代码但它没有工作

    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);

对此感谢的任何帮助

3 个答案:

答案 0 :(得分:0)

你不需要那个 有

array_filter()

将取消设置数组manual

中的所有空值

答案 1 :(得分: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);

答案 2 :(得分:0)

print_r( array_filter( $photo ));