PHP:检查数组键是否有值

时间:2016-01-29 11:35:56

标签: php arrays

我有以下数组($post_options),它可以以各种形式出现,关键是动态的:

可能是这样的:

  

array(1){[95] => string(2)“25”}

可能是这样,关键可以是任何东西:

  

array(1){[05] => string(2)“”}

我想添加一个控制语句来控制第一个键元素中的值是否有值。

我有这段代码:

if (!isset($post_options[0])) {
            // value is empty
            var_dump($post_options);
        }
        else {
            // value has value
            echo 'Option Selected';
        }

但这不起作用,当设置值而未设置时,它返回true。这里有什么解决方案?感谢

因此,如果数组看起来像这样(第一个键的值为空):

  

array(1){[05] => string(2)“”}

我想在这种情况下var_dump();

4 个答案:

答案 0 :(得分:21)

根据您的具体要求,有三种选择。

  1. array_key_exists($key, $array) 这是最简单的选择。如果数组具有给定键,则返回true,否则返回false

  2. isset($array[$key]) 略高于array_key_exists,因为它还要求分配给密钥的值不是null

  3. !empty($array[$key])(注意!)这是最严格的选项,因为它要求值不是任何空值(即不是null,{{1 }},false0等。)

  4. 还有一些其他选择,具体取决于具体要求。在我看来,您正在寻找'0'选项,因为它会(特别是)拒绝空字符串。

答案 1 :(得分:5)

如果你不知道数组的第一个键 - 例如,使用array_keys来获取数组的所有键。

$ar = array('95' => 'val');
$keys = array_keys($ar);
$first_item = $ar[$keys[0]]; 
var_dump($first_item);    // outputs: string(3) "val" 

另一个选项可以是current函数,它将返回数组的当前元素。考虑到您不移动数组指针,代码可以是:

$ar = array('95' => 'new_val', '02' => 'val2');
$cur = current($ar);
var_dump($cur);  // outputs: string(7) "new_val" 

之后,您可以使用标准empty功能来检查:

if (empty($cur))

if (empty($first_item))

答案 2 :(得分:1)

试试这个

if (!isset($post_options[0])) {            // value is empty
    if(!empty($post_options[0])) {
          var_dump($post_options);          
    }           
}

答案 3 :(得分:0)

isset检查数组位置是否存在,而不是它是否存在,或者它是否包含值。

您最好查看empty函数来执行此操作

if (empty($post_options[0])) {
    // value is empty
    var_dump($post_options);
} else {
    // value has value
    echo 'Option Selected';
}

希望这会有所帮助