我有一个函数(为了方便起见,我只使用count())我想要应用于4-5个不同的变量。现在,我这样做:
$a = count($a);
$b = count($b);
$c = count($c);
$d = count($d);
有更好的方法吗?我知道数组可以使用array_map函数,但我希望值保持为单独的值,而不是数组中的值。
感谢。
答案 0 :(得分:4)
我知道你说你不希望这些值在一个数组中,但是如何创建一个专门用于循环遍历值的数组呢?即:
$arr = Array($a, $b, $c, $d);
foreach ($arr as &$var)
{
$var = count($var);
}
我不确定这是否真的比原来的方式更整洁。
答案 1 :(得分:3)
如果您有一堆重复变量来收集数据,那么您的代码设计很差,应该使用数组来存储值,而不是数十个变量。所以也许你想要这样的东西:
$totals = array("Visa"=>0,"Mastercard"=>0,"Discover"=>0,"AmericanExpress"=>0);
然后你只需添加到你的数组元素(比如从你的SQL或你正在做的任何东西循环)
$totals['Visa'] += $row['total'];
但是如果你真的想沿着这条路走下去,你可以使用给你的工具,如果你想用大批量做这个,那么阵列是个不错的选择。然后foreach数组并使用变量变量,如下所示:
$variables = array('a','b','c'...);
foreach ( $variables as $var )
{
${$var} = count(${var});
}
答案 2 :(得分:1)
Ben和TravisO所说的内容,但使用array_walk来获得更清晰的代码:
$arr = Array($a, $b, $c, $d); array_walk($arr, count);
答案 3 :(得分:0)
您可以使用extract来重新获取值。
//test data
$a = range(1, rand(4,9));
$b = range(1, rand(4,9));
$c = range(1, rand(4,9));
//the code
$arr = array('a' => $a, 'b' => $b, 'c' => $c);
$arr = array_map('count', $arr);
extract($arr);
//whats the count now then?
echo "a is $a, b is $b and c is $c.\n";
答案 4 :(得分:-1)
你如何衡量“更好”?你可能能够想出一些聪明而且更短的东西,但是你所拥有的东西似乎最容易理解,这就是工作1.我会保留它原样,但是分配给新变量(例如$ sum_a,.. )。