我有以下数组($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();
答案 0 :(得分:21)
根据您的具体要求,有三种选择。
array_key_exists($key, $array)
这是最简单的选择。如果数组具有给定键,则返回true
,否则返回false
。
isset($array[$key])
略高于array_key_exists
,因为它还要求分配给密钥的值不是null
。
!empty($array[$key])
(注意!
)这是最严格的选项,因为它要求值不是任何空值(即不是null
,{{1 }},false
,0
等。)
还有一些其他选择,具体取决于具体要求。在我看来,您正在寻找'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';
}
希望这会有所帮助