0

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

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

有没有更好的办法?我知道数组可以使用 array_map 函数,但我希望这些值保留为单独的值,而不是数组内部的值。

谢谢。

4

5 回答 5

4

我知道您说过您不希望值位于数组中,但是仅创建一个专门用于循环值的数组怎么样?IE:

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

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

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

于 2009-01-06T17:17:59.707 回答
3

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

$totals = array("Visa"=>0,"Mastercard"=>0,"Discover"=>0,"AmericanExpress"=>0);

然后你只需添加到你的数组元素(比如从你的 SQL 的 while 循环或你正在做的任何事情)

$totals['Visa'] += $row['total'];

但是如果你真的想走这条路,你可以使用给你的工具,如果你想用大批量来做这个,那么数组是一个不错的选择。然后 foreach 数组并使用变量变量,如下所示:

$variables = array('a','b','c'...);

foreach ( $variables as $var )
{
    ${$var} = count(${var});
}
于 2009-01-06T17:20:34.350 回答
1

Ben 和 TravisO 所说的,但使用array_walk来获得更简洁的代码:

$arr = Array($a, $b, $c, $d);
array_walk($arr, count);
于 2009-01-06T18:35:08.690 回答
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";
于 2009-01-12T13:02:21.007 回答
-1

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

于 2009-01-06T17:20:56.143 回答