繁体   English   中英

PHP:检查数组键是否有价值

[英]PHP: Check if array key has value

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

可能是这样的:

array(1){[95] =>字符串(2)“ 25”}

可能是这样,密钥可以是任何东西:

array(1){[05] =>字符串(2)“”}

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

我有以下代码:

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

但这是行不通的,当设置和未设置值时,它返回true。 这里有什么解决方案? 谢谢

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

array(1){[05] =>字符串(2)“”}

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

根据您的确切要求,有三种选择。

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

  2. isset($array[$key])array_key_exists严格一点,因为它还要求分配给键的值不为null

  3. !empty($array[$key]) (请注意! ),这是最严格的选项,因为它要求该值不能为空值(即,不能为nullfalse0'0'等)。

同样,还有其他选择,具体取决于确切的要求。 在我看来,您正在寻找!empty选项,因为它会(尤其是)拒绝空字符串。

如果您不知道数组的第一个键-例如,使用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))

尝试这个

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

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

你最好看看函数来做到这一点

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

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM