等於零我有很多的變化,我需要打印的數值爲多少,這些變量都等於零:檢查多少變量用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
感謝您的任何建議!
等於零我有很多的變化,我需要打印的數值爲多少,這些變量都等於零:檢查多少變量用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
感謝您的任何建議!
我把我所有的變量到一個數組,用foreach循環,並添加到$零變量:
$values = array('0' => $var1, '1' => $var2, '2' => $var3);
$zeros = 0;
foreach($values as $v) {
if($v === '0')
$zeros++;
}
echo $zeros;
,我發現這是一個簡單的解決方案,感謝投入,但!
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;
我不明白你正在嘗試什麼在這裏實現,也許我誤解的需要,但下面而又簡單的代碼做的目的:
$var1 = '2';
$var2 = '0';
$var3 = '4';
$zeros = ($var1 =='0')?1:0 + ($var2 =='0')?1:0 + ($var3 =='0')?1:0;
echo $zeros
基本上我嵌套ternaly conditional expressions,而不是然後使用常規,如果然後elses。
這將獲得所有已定義變量的列表,並統計有多少個爲=== 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());
然後功能可以檢測陣列和,直到它已搜索了所有瓦爾調用自身。
一個數組會比單獨的變量好很多 – 2012-08-03 03:26:01
更好的使用[arrays](http://php.net/manual/en/language.types.array.php),因爲它不是很難學它 – Hawili 2012-08-03 03:26:23
我結束了使用數組,謝謝你的迴應,我的解決方案在下面! – tcd 2012-08-03 18:33:09