PHP:检查数组键是否有值

新手上路,请多包涵

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

它可能是这样的:

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

可能是这样的,key 可以是任何东西:

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

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

我有这段代码:

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

但这不起作用,它在设置和未设置值时返回 true。这里的解决方案是什么?谢谢

所以如果数组是这样的(第一个键的值为空):

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

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

原文由 Liam Fell 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 286
2 个回答

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

原文由 u_mulder 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

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

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

同样,根据具体要求,还有一些其他选项。在我看来,您正在寻找 !empty 选项,因为它将(特别是)拒绝空字符串。

原文由 Ken Wayne VanderLinde 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏