Pergunta

Eu tenho uma função (para facilitar, vou usar count ()) que deseja aplicar ao talvez 4-5 variáveis ??diferentes. Agora, eu estou fazendo isso:

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

Existe uma maneira melhor? Eu sei matrizes pode usar a função array_map, mas eu quero os valores para permanecer como valores separados, em vez de valores dentro de uma matriz.

Graças.

Foi útil?

Solução

Eu sei que você disse que você não quer que os valores sejam em uma matriz, mas como sobre apenas criando uma matriz especificamente para looping através dos valores? ou seja:.

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

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

Eu não tenho certeza se isso realmente é muito mais arrumado do que a forma original, apesar de tudo.

Outras dicas

Se você tem um monte de repetir variáveis ??aos dados recolher o seu código é mal concebidos e deve apenas ser usando uma matriz para armazenar os valores, em vez de dezenas de variáveis. Então, talvez você quer algo como:

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

então você simplesmente adicionar ao seu elemento de matriz (digamos, de um loop while de seu SQL ou o que você está fazendo)

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

Mas se você realmente quer ir por esse caminho, você pode usar as ferramentas dadas a você, se você quiser fazer isso com um grande lote, em seguida, uma matriz é uma boa escolha. Então foreach as variáveis ??de matriz e variáveis ??uso, assim:

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

foreach ( $variables as $var )
{
    ${$var} = count(${var});
}

O que Ben e TravisO disse, mas usar array_walk para um código mais limpo pouco:

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

Você pode usar o extrato para obter os valores de volta novamente.

//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";

Como você mede o "melhor"? Você pode ser capaz de chegar a algo inteligente e mais curto, mas o que você tem parece que é mais fácil de entender, o que é o trabalho 1. Eu deixá-lo como ele é, mas atribuir a novas variáveis ??(por exemplo $ sum_a, .. .).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top