PHP检查数组值是否为true

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

我想知道,如果数组键不存在,在不抛出PHP通知的情况下检查数组键中的true的合适方法是什么

我的脚本在for-each循环中执行了几个if语句,并在一个名为“audit”的数组中创建键

因此,对于循环的一次迭代,数组可能如下所示:

$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不会检查下一个条件,因为
&
操作符。只有当两个条件都满足的时候,它才会击中<代码>做某事<代码>块。这也是一个很好的选择,谢谢!这也是一个很好的选择,谢谢!