检查键值是否为空

时间:2014-03-27 10:30:27

标签: php arrays

如何在不指定确切键名的情况下检查键的值是否为空?

此代码未按预期工作。例如,键3-3-divisa的值为空,但未由空函数

过滤
foreach ($data as $key => $value) {
    if (!empty($value[0]) && !empty($value[1])) {
        var_dump($value[0]);
        var_dump($value[1]);
    }
}

输出

array (size=1)
  '3-1-serie_quant' => string 'test' (length=5)
array (size=1)
  '3-1-divisa' => string 'test' (length=5)
array (size=1)
  '3-2-serie_quant' => string '' (length=5)
array (size=1)
  '3-2-divisa' => string '' (length=5)
array (size=1)
  '3-3-serie_quant' => string '' (length=5)
array (size=1)
  '3-3-divisa' => string '' (length=5)
array (size=1)

预期产出:

array (size=1)
  '3-1-serie_quant' => string 'test' (length=5)
array (size=1)
  '3-1-divisa' => string 'test' (length=5)

$ data数组:

array (size=5)
  0 => 
    array (size=2)
      0 => 
        array (size=1)
          '3-1-serie_quant' => string 'test' (length=5)
      1 => 
        array (size=1)
          '3-1-divisa' => string 'test' (length=5)
  1 => 
    array (size=2)
      0 => 
        array (size=1)
          '3-2-serie_quant' => string '' (length=5)
      1 => 
        array (size=1)
          '3-2-divisa' => string '' (length=5)
  2 => 
    array (size=2)
      0 => 
        array (size=1)
          '3-3-serie_quant' => string '' (length=5)
      1 => 
        array (size=1)
          '3-3-divisa' => string '' (length=5)
  3 => 
    array (size=2)
      0 => 
        array (size=1)
          '3-4-serie_quant' => string '' (length=0)
      1 => 
        array (size=1)
          '3-4-divisa' => string '' (length=0)

5 个答案:

答案 0 :(得分:1)

您可以使用array_filter()

$data = array_filter($data, function($x)
{
   return array_filter($x, function($y)
   {
      return array_filter($y) == $y;
   }) == $x;
});

答案 1 :(得分:1)

似乎$ value [0]和$ value [1]是数组,所以请尝试以下方法:

foreach ($data as $value) {
   $field0 = reset($value[0]);
   if (!empty($field0)) {
       var_dump($value[0]);
   }
   $field1 = reset($value[1]);
   if (!empty($field1)) {
       var_dump($value[1]);
   }
}

答案 2 :(得分:0)

试试这个:

foreach ($data as $key => $value) {
    if (!empty($value[0]) && !empty($value[1]) && strlen($value[0]) && strlen($value[1])) {
        var_dump($value[0]);
        var_dump($value[1]);
    }
}

http://de2.php.net/empty

答案 3 :(得分:0)

关于empty函数的PHP文档:

  

在PHP 5.5之前,empty()仅支持变量;其他任何事都会导致解析错误。

如果您使用的版本低于5.5,则$value[0]无法正常工作。

答案 4 :(得分:0)

您的$value是包含size = 1的数组:

array (size=1)
  '3-3-divisa' => string '' (length=5)

此外,一个键不是0。因此,$value[0]$value[1]不存在于您的数组中。

尝试,如果您正在使用PHP 5.4 +:

if(!empty(array_values($values)[0])