我有很多变量,我需要打印一个数值,以确定这些变量中有多少等于零:
$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 :(得分: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;
我发现这是一个简单的解决方案,感谢输入!