删除空键的数组项

时间:2017-09-20 09:34:27

标签: php arrays

我有这个数组

[4] => Array
    (
        [label] => Politics
        [value] => politics
    )

[5] => Array
    (
        [label] => 
        [value] => 
    )

[6] => Array
    (
        [label] => Sports
        [value] => sports
    )

我想删除此块

[5] => Array
    (
        [label] => 
        [value] => 
    )

所以,我想要删除空数组键或值的过程。

感谢。

7 个答案:

答案 0 :(得分:1)

$array = array(array('label' => "" ,'value' => ''),array('label' => 'test','value' => 'tset2'));
    foreach($array as $key => $val)
    {
        if(empty($val['label']) ||  empty($val['value']) )
        {
            unset($array[$key]);
        }
    }
    echo "<pre>";
    print_r($array) ;
    echo "</pre>";

我认为此代码可以帮助您

答案 1 :(得分:0)

可能您可以切片要删除的元素。请参阅链接:Delete an element from an array

答案 2 :(得分:0)

array_filter($your_table);  

http://php.net/manual/pl/function.array-filter.php

我在使用数组

中的空值时遇到同样的问题时使用了这个

答案 3 :(得分:0)

尝试使用此''过滤器,

$new = array_filter($entry, function ($var) {
    return ($var['label'] !== '' || $var['value'] !== '' );
});

print '<pre>';
print_r($new);
print '</pre>';

修改null过滤器

$new = array_filter($entry, function ($var) {
    return ($var['label'] !== null || $var['value'] !== null );
});

print '<pre>';
print_r($new);
print '</pre>';

答案 4 :(得分:0)

您可以使用内置的array_filter()功能。

对于这个数组结构:

$arr = [
    [
        'label' => 'Politics',
        'value' => 'politics'
    ],
    [
        'label' =>'',
        'value' => ''
    ],
    [
        'label' => 'Sports',
        'value' => 'sports'
    ],
];

此代码将删除任何没有标签或值的元素:

$arr = array_filter($arr, function ($e) {
   return ($e['label'] || $e['value']);
});

答案 5 :(得分:0)

我建议做类似下面的伪代码

foreach (array_keys as key) {

   if  (empty(array[key][label])==true)
      unset(array[key]);
}

答案 6 :(得分:0)

如果要删除所有具有null,empty或false值的子数组,可以将array_filter与可调用array_filter一起使用。

$data = 
[
    [
        'foo' => null,
        'bar' => 'big'    
    ],
    [
    ],
    [
        'baz' => 'fat',
        'bat' => 'mama'
    ],
    [
        'man' => '',
        'qux' => null,
        'quux' => false
    ]
];

$data = array_filter($data, 'array_filter');

var_export($data);

输出:

array (
  0 => 
  array (
    'foo' => NULL,
    'bar' => 'big',
  ),
  2 => 
  array (
    'baz' => 'fat',
    'bat' => 'mama',
  ),
)

在没有回调的情况下使用array_filter将丢弃等于FALSE的元素。 ((bool) array()是假的。)