0

多数の変数があり、これらの変数のどれだけがゼロに等しいかを示す数値を出力する必要があります。

$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

4 に答える 4

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());

そして、関数は配列を検出し、すべての変数を検索するまで自分自身を呼び出すことができます。

于 2012-08-03T03:28:04.233 に答える
0

if($var1 == 0) $zeros++;var2、3 などについて繰り返します。

変数変数を使用して、変数がすべて数字である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;
于 2012-08-03T03:24:41.547 に答える
0

すべての変数を配列に入れ、foreach でループし、$zeros 変数に追加します。

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

$zeros = 0;

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

echo $zeros;

これは簡単な解決策であることがわかりましたが、入力していただきありがとうございます!

于 2012-08-03T07:55:56.737 に答える
0

ここで達成しようとしていることの目的がわかりません。必要性を誤解している可能性がありますが、次の単純なコードでそれが行われます。

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

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

基本的に、通常の if then else を使用する代わりに、3 項条件式をネストしました。

于 2012-08-03T03:27:50.030 に答える