我有一个函数(为了方便起见,我只使用count())我想要应用于4-5个不同的变量。现在,我这样做:

$a = count($a);
$b = count($b);
$c = count($c);
$d = count($d);

有更好的方法吗?我知道数组可以使用array_map函数,但我希望值保持为单独的值,而不是数组中的值。

感谢。

有帮助吗?

解决方案

我知道你说你不希望这些值在一个数组中,但是如何创建一个专门用于循环遍历值的数组呢?即:

$arr = Array($a, $b, $c, $d);

foreach ($arr as &$var)
{
   $var = count($var);
}

我不确定这是否真的比原来的方式更整洁。

其他提示

如果您有一堆重复变量来收集数据,那么您的代码设计很差,应该使用数组来存储值,而不是数十个变量。所以也许你想要这样的东西:

$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});
}

Ben和TravisO所说的,但使用 array_walk 获得更清晰的代码:

$arr = Array($a, $b, $c, $d);
array_walk($arr, count);

您可以使用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";

你如何衡量“更好”?你可能能够想出一些聪明而又简短的东西,但是你所拥有的东西似乎最容易理解,这就是工作1.我会保留原样,但是分配给新的变量(例如$ sum_a,.. )。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top