Question

J'ai une fonction (par souci de commodité, je vais simplement utiliser count ()) que je veux appliquer à peut-être 4-5 variables différentes. En ce moment, je fais ceci:

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

Y a-t-il un meilleur moyen? Je sais que les tableaux peuvent utiliser la fonction array_map, mais je veux que les valeurs restent en tant que valeurs séparées, au lieu de valeurs à l'intérieur d'un tableau.

Merci.

Était-ce utile?

La solution

Je sais que vous avez dit que vous ne voulez pas que les valeurs soient dans un tableau, mais pourquoi ne pas créer un tableau spécifiquement pour boucler les valeurs? c'est-à-dire:

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

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

Je ne suis pas sûr que ce soit vraiment beaucoup plus ordonné que la façon originale, cependant.

Autres conseils

Si vous avez un grand nombre de variables répétitives pour collecter des données, votre code est mal conçu et devrait simplement utiliser un tableau pour stocker les valeurs, au lieu de dizaines de variables. Alors peut-être que vous voulez quelque chose comme:

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

alors vous ajoutez simplement à votre élément de tableau (disons à partir d'une boucle while de votre SQL ou quoi que vous fassiez)

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

Mais si vous voulez vraiment suivre cette voie, vous pouvez utiliser les outils qui vous sont donnés, si vous voulez le faire avec un gros lot, un tableau est un bon choix. Puis, entrez dans le tableau et utilisez des variables variables, comme suit:

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

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

Ce que Ben et TravisO ont dit, mais utilisez array_walk pour un code un peu plus propre:

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

Vous pouvez utiliser extraire pour récupérer les valeurs.

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

Comment mesurez-vous "meilleur"? Vous pourrez peut-être trouver quelque chose d'intelligent et de plus court, mais ce que vous avez semble plus facile à comprendre, c'est-à-dire le job 1. Je le laisserais tel quel, mais j'affecterai de nouvelles variables (par exemple $ sum_a, .. .).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top