你能用简短的代码解决这个问题吗?

时间:2010-07-12 07:23:41

标签: php

有10个变量。说$var1, $var2, $var3, $var4,....$var10

$count变量。我要找的是如果所有变量都设置为$count = 10+1或者如果9个变量只设置$count=9+1或者如果8个变量只设置$count=8+1,那么最后一个变量为1 {然后设置一个变量$count = 1+1)。

我知道使用IfElse ifelse执行此操作但我需要编写太多代码。

有没有人知道如何在简短的代码中做到这一点??

6 个答案:

答案 0 :(得分:11)

您可以使用PHP中的variable variables来实现此目的:

$count = 1;
for ($i = 1; $i <= 10; $i++)
{
    if ( isset( ${'var'.$i} ) ) $count++;
}

答案 1 :(得分:3)

试试这个(未经测试):

$arr = array($var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8, $var9, $var10);
$count = 1;
foreach ($arr as $v)
{
    if (isset($v))
        $count++;
}

答案 2 :(得分:2)

<?php
  ...
$countarr = compact('var1', 'var2', ..., 'var10');
$count = count($countarr) + 1;
?>

答案 3 :(得分:0)

呃......你知道PHP允许使用循环......

<?php

$var1 = 100;
$var4 = 200;
$var9 = 600;

$count = 0;
for($i=1; $i<=10; $i++){
    if( isset(${"var$i"}) ){
        $count++;
    }
}

echo $count;

?>

...和数组?

<?php

$var = array(100, 200, 600);
$count = count($var);
echo $count;

?>

回答Boreadlid的评论

您应该注意,取消设置数组元素与将其设置为NULL不同。这段代码:

<?php

$data = array(10, 20, 30);
$data[1] = NULL;
unset($data[0]);
var_dump($data);

?>

...打印出来:

array(2) {
  [1]=>
  NULL
  [2]=>
  int(30)
}

...所以count($data)打印2因为 是一个双元素数组。

无论OP想要完成什么,他都应该使用从未设置未使用值的数组。 $var1, $var2, $var3方法可行,但不是熟练的程序员会做的。 (当然,成为一名新手并没有错。)

答案 4 :(得分:0)

哦,来吧......你可以自己做一些思考(和阅读文档)。

只需将代码回答上一个问题,然后在循环中使用isset(${var+$i}, ${tvar+$i})

答案 5 :(得分:-1)

你有20个变量(10x“var”和10x“tvar”):

bool[] vars = new bool[10];
bool[] tvars = new bool[10];

我不会在$ count中得到你的+1部分......但是呢:

int count = 1; //includes the always needed +1 part
for(int i=0;i<10;i++)
   if(vars[i] && tvars[i])
      count += i+1; //so 0 => 1

...