Wie können Sie das tun? Mein Code hier gesehen funktioniert nichtMachen Sie 1d Array vom ersten Mitglied jedes Wertes in 2d Array | PHP
for($i=0;i<count($cond);$i++){
$cond[$i] = $cond[$i][0];
}
Wie können Sie das tun? Mein Code hier gesehen funktioniert nichtMachen Sie 1d Array vom ersten Mitglied jedes Wertes in 2d Array | PHP
for($i=0;i<count($cond);$i++){
$cond[$i] = $cond[$i][0];
}
Das sollte funktionieren. Warum funktioniert es nicht? Welche Fehlermeldung erhalten Sie? Dies ist der Code, den ich benutzen würde:
$inArr;//This is the 2D array
$outArr = array();
for($i=0;$i<count($inArr);$i++){
$outArr[$i] = $inArr[$i][0];
}
// Make sure you have your first array initialised here!
$array2 = array();
foreach ($array AS $item)
{
$array2[] = $item[0];
}
Vorausgesetzt, dass Sie die gleichen Variablennamen danach haben wollen, können Sie das neue Array zurück in die alte neu zuweisen.
Sie können auch, abhängig von dem, was im Array ist, etwas wie tun.
$array = array_merge(array_values($array));
Dank für die Antwort, aber ich will nicht einen anderen Variablennamen aufbrauchen, in PHP die Variable schreiben soll, nachdem die Variable gelesen wird? Ich dachte? – Supernovah
Ja, jedoch, wie Sie es in einer Schleife haben, wäre es ein wenig weniger verwirrend. Außerdem wird count() bei jeder Iteration ausgewertet. Wenn du Dinge hinzufügst, wird sich das immer ändern. Es gibt keine Begrenzung für die Anzahl der Variablennamen in PHP! Sie können es immer wieder der ursprünglichen Variablen nach der Schleife zuweisen (mit $ array = $ array2;) – Mez
Ich habe festgestellt, dass Sie Änderungen in einer foreach-Schleife vornehmen können, wenn Sie tun - foreach ($ myarray als & $ item) – grantwparks
Es könnte Probleme geben, wenn der Quell-Array nicht numerisch Index ist. Versuchen Sie dies stattdessen:
Das ist wahr, aber mein Array ist numerisch - Der Fehler ist meine Variable, auf die ich ohne Variable denoter $ – Supernovah
Wie bereits erwähnt, wird Ihr Code in verschiedenen Situationen nicht ordnungsgemäß funktionieren. Versuchen Sie Ihr Array mit diesen Werten zu initialisieren:
$cond = array(5=>array('4','3'),9=>array('3','4'));
Eine Lösung, mir besser lesbar ist, auch den folgenden Code:
//explain what to do to every single line of the 2d array
function reduceRowToFirstItem($x) { return $x[0]; }
// apply the trasnformation to the array
$a=array_map('reduceRowTofirstItem',$cond);
Sie die reference for array map für eine gründliche Erklärung lesen kann.
Sie können sich auch für eine geringfügige Variation unter Verwendung von array_walk entscheiden (es funktioniert auf dem Array "in Ort"). Beachten Sie, dass die Funktion keinen Wert zurückgibt und dass ihr Parameter als Referenz übergeben wird.
function reduceToFirstItem(&$x) { $x=$x[0]; }
array_walk($cond, 'reduceToFirstItem');
verwiesen wurde Da der Code, den ich schreibe, privat ist, kann ich sicher sein, dass das Array immer numerisch ist, beginnend bei Null ohne Lücken. Aber ich danke dir für die Nachricht, da ich den Gedanken irgendwie übersprungen habe. – Supernovah
Es war nur um eine mögliche Quelle von Fehlern zu zeigen. Wenn Sie denken, dass Sie Ihren Code nicht wiederverwenden werden, können Sie den Ratschlag ignorieren;) – Eineki
Es kann als dies so einfach sein:
$array = array_map('reset', $array);
oh ich sehe das Problem ... vielleicht die i
Supernovah
@Supernovah: Jede Variable, in jedem Zugriff darauf, benötigt das $ -Zeichen vor seinem Namen. – lacop