【问题标题】:How can I simply check various variables for one statement?我怎样才能简单地检查一个语句的各种变量?
【发布时间】:2026-01-27 03:30:01
【问题描述】:

我想为同一个语句检查大约 7 个变量,但这不是必需的。所有这些变量都有一个带有自定义键的数组。

例如,我有这个代码:

$generalSettings = array(
"lights" = $_POST['generalLights'],
"tones" = $_POST['generalTones']
);

(还有更多。)

现在,我想检查该值是否为 1;如果不是,则该值必须设置为 0。

我会这样做:

if($generalSettings['ligts'] == 1) {
$generalSettings['lights'] = 1;
} else {
$generalSettings['lights'] = 0;
}
if($generalSettings['tones'] = 1) {
$generalSettings['tones'] = 1;
} else {
$generalSettings['tones'] = 0;
}

如果您想到 3 个包含 4 个项目的数组和包含 5 个项目的 4 个数组,这需要做很多工作。

我现在的问题是:我可以用更简单的方式做到这一点吗?如果可以,怎么做?

【问题讨论】:

  • (foreach 元素作为元素) { check(element) }

标签: php arrays variables if-statement


【解决方案1】:

使用循环:

foreach ($generalSettings as $key) {
  if($generalSettings[$key] == 1)
    $generalSettings[$key] = 1;
  else
    $generalSettings[$key] = 0;
}

【讨论】:

  • 变量 $key 是关键字还是我应该定义它?如果我必须定义它:我应该怎么做?看起来很简单,谢谢!
  • 它是一个由foreach 循环创建的变量,用于保存迭代器元素。无需定义/声明它。
【解决方案2】:

你可以像下面这样检查

$arr = array('a'=>1,'b'=>4,'c'=>9,'d'=>1);    

遍历数组并检查值,如果值不为 1 则设置为 0

foreach($arr  as $key=>$value){
     if($value != 1){
         $arr[$key] = 0;
     }
 }

 echo "<pre>";print_r($arr);

Array
(
    [a] => 1
    [b] => 0
    [c] => 0
    [d] => 1
)

【讨论】:

  • 谢谢。我可以为多个数组做什么?我可以把这个foreach放在另一个吗?我是的,如何?