Frage

Ich habe eine Funktion (für Leichtigkeit, ich werde nur count ()), die ich vielleicht 4-5 verschiedene Variablen anwenden möchten. Gerade jetzt, ich tue dies:

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

Gibt es einen besseren Weg? Ich weiß, dass Arrays die array_map Funktion nutzen zu können, aber ich mag die Werte als separate Werte bleiben, statt Werte innerhalb eines Arrays.

Danke.

War es hilfreich?

Lösung

Ich weiß, Sie sagen, Sie wollen nicht die Werte in einem Array sein, aber wie wäre es nur eine Reihe speziell zu schaffen durch die Werte für Looping? das heißt:.

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

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

Ich bin mir nicht sicher, ob das wirklich viel aufgeräumter als die ursprüngliche Art und Weise ist, though.

Andere Tipps

Wenn Sie ein paar Variablen von sich wiederholenden Daten Ihres Codes zu sammeln ist schlecht konzipiert und sollte nur ein Array mit den Werten zu speichern, statt Dutzende von Variablen. Also vielleicht wollen Sie so etwas wie:

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

dann einfach Sie zu Ihrem Array-Element hinzufügen (sagen wir von einer while-Schleife von Ihrem SQL oder was auch immer Sie tun)

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

Aber wenn Sie wirklich diesen Weg gehen wollen nach unten, können Sie die Tools, die Ihnen gegeben verwenden, wenn Sie diese mit einem großen Stapel tun wollen dann ein Array ist eine gute Wahl. Dann foreach das Array und verwenden variable Variablen, etwa so:

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

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

Was Ben und Traviso gesagt, aber benutzen array_walk für ein wenig sauberer Code:

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

Sie können Extrakt verwenden, um die Werte wieder heraus zu bekommen.

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

Wie messen Sie „besser“? Sie könnten mit etwas Kluges und kürzer kommen können, aber was Sie haben scheint, wie es am einfachsten zu verstehen ist, was Arbeit ist 1. ich es verlassen würde, wie es ist, sondern auf neue Variablen (zB $ sum_a, zuweisen .. )..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top