PHP检查数组值是否为true
我想知道,如果数组键不存在,在不抛出PHP通知的情况下检查数组键中的true的合适方法是什么 我的脚本在for-each循环中执行了几个if语句,并在一个名为“audit”的数组中创建键 因此,对于循环的一次迭代,数组可能如下所示:PHP检查数组值是否为true,php,arrays,Php,Arrays,我想知道,如果数组键不存在,在不抛出PHP通知的情况下检查数组键中的true的合适方法是什么 我的脚本在for-each循环中执行了几个if语句,并在一个名为“audit”的数组中创建键 因此,对于循环的一次迭代,数组可能如下所示: $audit = Array ( 'price_changed' => 1, 'price_changed_to' => 10, 'quantity_changed' => 1, 'quantity_cha
$audit =
Array
(
'price_changed' => 1,
'price_changed_to' => 10,
'quantity_changed' => 1,
'quantity_changed_to' => 6
)
if($audit['price_changed']){
.... do something ....
}
接下来,它可能看起来像这样:
$audit =
Array
(
'quantity_changed' => 1,
'quantity_changed_to' => 4,
'description_changed' => 1,
'description_changed_to' => 'Test product'
)
现在,我希望能够做到以下几点:
$audit =
Array
(
'price_changed' => 1,
'price_changed_to' => 10,
'quantity_changed' => 1,
'quantity_changed_to' => 6
)
if($audit['price_changed']){
.... do something ....
}
但是,对于for each中的第二项,该键不存在,我的调试日志中充满了PHP通知
我肯定我可以做下面这样的事情,但似乎我不应该为这样简单的事情输入那么多
if(isset($audit['price_changed'])) {
if($audit['price_changed']) {
.... do something ....
}
}
我是不是想得太多了
编辑:这是我的审计数组的精简示例。。。太多的可能性在循环开始时将零分配给它们。
如果您可以简单地执行以下操作,则不要使用嵌套的
if(isset($audit['price_changed']) && $audit['price_changed']) {
// do something ...
}
如果您可以简单地执行以下操作,则不要使用嵌套的
if(isset($audit['price_changed']) && $audit['price_changed']) {
// do something ...
}
使用函数。它将检查这两个条件
- 您的密钥存在于数组中
- 键的值不是
或false
或0
空字符串
if (!empty($audit['price_changed'])) {
// do something
}
使用函数。它将检查这两个条件
- 您的密钥存在于数组中
- 键的值不是
或false
或0
空字符串
if (!empty($audit['price_changed'])) {
// do something
}
对于PHP7,可以使用空合并运算符,
??
:
if ($value['price_changed'] ?? false)
如果未设置价格更改,??
将返回第二个参数,导致if
失败,因为表达式的计算结果将为false:
php > $foo = array('t' => true, 'f' => false);
php > if ($foo['t'] ?? false) { echo 'true'; } else { echo 'false'; }
true
php > if ($foo['f'] ?? false) { echo 'true'; } else { echo 'false'; }
false
php > if ($foo['file_not_found'] ?? false) { echo 'true'; } else { echo 'false'; }
false
对于PHP7,可以使用空合并运算符,
??
:
if ($value['price_changed'] ?? false)
如果未设置价格更改,??
将返回第二个参数,导致if
失败,因为表达式的计算结果将为false:
php > $foo = array('t' => true, 'f' => false);
php > if ($foo['t'] ?? false) { echo 'true'; } else { echo 'false'; }
true
php > if ($foo['f'] ?? false) { echo 'true'; } else { echo 'false'; }
false
php > if ($foo['file_not_found'] ?? false) { echo 'true'; } else { echo 'false'; }
false
使用
empty
函数如果需要,您可以将条件与AND运算符组合。如果需要,使用empty
函数您可以将条件与AND运算符组合。如果更改的价格为false,则不会进行评估问题是关于在数组键中检查true的适当方法如果更改的价格是错误的问题是关于在数组键中检查true的适当方法这不会抛出通知,即使我们仍在检查可能不存在的东西?或者如果isset
返回false,它会自动放弃吗?如果isset返回false
php不会检查下一个条件,因为&
操作符。只有当两个条件都满足的时候,它才会击中<代码>做某事<代码>块。所以,即使我们仍在检查一些可能不存在的东西,这也不会引起注意?或者如果isset
返回false,它会自动放弃吗?如果isset返回false
php不会检查下一个条件,因为&
操作符。只有当两个条件都满足的时候,它才会击中<代码>做某事<代码>块。这也是一个很好的选择,谢谢!这也是一个很好的选择,谢谢!