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

时间:2012-08-03 03:20:01

标签: php variables

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

$var1 = '2';
$var2 = '0';
$var3 = '4';

//check how many variables = 0
$zeros = ?

//should be a numeric value this example should print '1'
echo $zeros

感谢您的任何建议!

4 个答案:

答案 0 :(得分:3)

这会获取所有已定义变量的列表,并计算=== 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.

编辑:如果需要检查数组的值,可以将其修改为递归工作的函数。您可以从全局范围中调用它,如下所示:

$zeroes = countZero(get_defined_vars());

然后该函数可以检测数组并调用自身,直到它搜索到所有变量。

答案 1 :(得分:0)

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

使用variable variables生成字符串中的变量(如果它们都遵循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;

答案 2 :(得分:0)

我不明白你在这里想要实现的目的,也许我误解了需要,但是下面这个简单的代码就是这样做的:

$var1 = '2';
$var2 = '0';
$var3 = '4';

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

基本上我嵌套了ternaly conditional expressions,而不是使用常规的if。[/ p>

答案 3 :(得分:0)

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

$values = array('0' => $var1, '1' => $var2, '2' => $var3);

$zeros = 0;

foreach($values as $v) {
    if($v === '0')
    $zeros++;
 }

echo $zeros;

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