有10个变量。说$var1, $var2, $var3, $var4,....$var10
和$count
变量。我要找的是如果所有变量都设置为$count = 10+1
或者如果9个变量只设置$count=9+1
或者如果8个变量只设置$count=8+1
,那么最后一个变量为1 {然后设置一个变量$count = 1+1
)。
我知道使用If
,Else if
和else
执行此操作但我需要编写太多代码。
有没有人知道如何在简短的代码中做到这一点??
答案 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;
?>
您应该注意,取消设置数组元素与将其设置为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
...