用php检查有多少变量等于零


Check how many variables equal zero with php

我有很多变量,我需要打印一个数值,说明这些变量中有多少等于零:

$var1 = '2';
$var2 = '0';
$var3 = '4';
//check how many variables = 0
$zeros = ?
//should be a numeric value this example should print '1'
echo $zeros

谢谢你的建议!

这将获取所有定义变量的列表,并统计=== 0的数量,不包括$_GET$_POST$_COOKIE全局变量。

如果在函数中定义此代码,则只计算该范围内的变量。

<?php 
$value = 0;
$var   = 1;
$test  = false;
$nine  = 0;
$zero  = 9;
$zeroes = 1;  // set to 1 so we don't count this
$vars = get_defined_vars();
foreach($vars as $var) {
    if (is_array($var) && (
      isset($var['_GET']) || isset($var['_POST']) ||
      isset($var['_COOKIE']))
    ) {
        continue;  // don't count superglobal arrays
    }
    if ($var === 0) $zeroes++;
}
$zeroes -= 1;  // subtract the initial value
echo "There are $zeroes zero values.";  // There are 2 zero values.

EDIT:例如,如果需要检查数组的值,可以将其修改为递归工作的函数。你可以从全球范围这样称呼它:

$zeroes = countZero(get_defined_vars());

然后,函数可以检测数组并调用自己,直到搜索完所有变量为止。

var2、3等的if($var1 == 0) $zeros++;重复

如果变量都遵循varX模式,其中X是一个数字,则使用变量变量从字符串中生成变量。

$var1 = '2';
$var2 = '0';
$var3 = '4';
$zeros = 0;
for($i = 1; $i <= 3; $i++) {
  $var = ${'var' . $i};
  if($var == 0) $zeros ++;
}
echo $zeros;

我不明白你在这里试图实现的目的,也许我误解了这一需求,但以下简单的代码做到了:

$var1 = '2';
$var2 = '0';
$var3 = '4';
$zeros = ($var1 =='0')?1:0 + ($var2 =='0')?1:0 + ($var3 =='0')?1:0;
echo $zeros

基本上,我嵌套了三个条件表达式,而不是使用正则的if-then-elses。

我将所有变量放入一个数组中,用foreach循环并添加到$zeros变量中:

$values = array('0' => $var1, '1' => $var2, '2' => $var3);
$zeros = 0;
foreach($values as $v) {
    if($v === '0')
    $zeros++;
 }
echo $zeros;

我发现这是一个简单的解决方案,不过感谢您的输入!