Frage

Wie kann man das tun? Mein Code hier gesehen nicht funktioniert

for($i=0;i<count($cond);$i++){
    $cond[$i] = $cond[$i][0];
}
War es hilfreich?

Lösung

Das sollte funktionieren. Warum funktioniert es nicht? was Fehlermeldung erhalten Sie? Dies ist der Code, den ich verwenden würde:

$inArr;//This is the 2D array
$outArr = array();
for($i=0;$i<count($inArr);$i++){
        $outArr[$i] = $inArr[$i][0];
}

Andere Tipps

Es kann so einfach wie dies:

$array = array_map('reset', $array);

Es könnte Probleme geben, wenn der Quell-Array nicht numerisch Index ist. Versuchen Sie stattdessen:

$destinationArray = array();
for ($sourceArray as $key=>$value) {
    $destinationArray[] = $value[0]; //you may want to use a different index than '0'
}
// Make sure you have your first array initialised here!
$array2 = array();
foreach ($array AS $item)
{
    $array2[] = $item[0];
}

Angenommen, Sie denselben Variablennamen danach haben wollen, können Sie das neue Array zurück in die alte neu zuweisen.

$array = $array2;
unset($array2); // Not needed, but helps with keeping memory down

Auch könnte Sie in der Lage sein, abhängig davon, was in dem Array ist, so etwas wie.

$array = array_merge(array_values($array));

Wie bereits erwähnt, Ihr Code nicht richtig in verschiedener Situation arbeiten. Versuchen Sie Ihren Array zu initialisieren, mit diesen Werten:

$cond = array(5=>array('4','3'),9=>array('3','4'));

Eine Lösung, mir besser lesbar ist auch der folgende 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 können lesen Sie die Referenz für Array Karte für eine gründliche Erklärung.

Sie können auch entscheiden, für eine leichte Variation mit array_walk (es ist auf dem Array "in place" arbeiten). Beachten Sie, dass die Funktion keinen Wert zurückgibt und dass seine Parameter als Referenz übergeben wird.

function reduceToFirstItem(&$x) { $x=$x[0]; }
array_walk($cond, 'reduceToFirstItem');
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top