Question

Comment pouvez-vous faire cela? Mon code vu ici ne fonctionne pas

for($i=0;i<count($cond);$i++){
    $cond[$i] = $cond[$i][0];
}
Était-ce utile?

La solution

Cela devrait fonctionner. Pourquoi ça ne marche pas? quel message d'erreur recevez-vous? C'est le code que je voudrais utiliser:

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

Autres conseils

Cela peut être aussi simple que cela:

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

Il pourrait y avoir des problèmes si le tableau source n’est pas indexé numériquement. Essayez ceci à la place:

$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];
}

En supposant que vous ayez le même nom de variable par la suite, vous pouvez réaffecter le nouveau tableau à l'ancien.

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

En outre, vous pourrez peut-être, en fonction de ce qui se trouve dans le tableau, faire quelque chose comme.

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

Comme indiqué précédemment, votre code ne fonctionnera pas correctement dans diverses situations. Essayez d’initialiser votre tableau avec ces valeurs:

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

Une solution, pour moi mieux lisible, est aussi le code suivant:

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

Vous pouvez lire la référence sur la carte de matrice pour une explication détaillée.

Vous pouvez également opter pour une légère variation en utilisant array_walk (il fonctionne sur le tableau "en place"). Notez que la fonction ne renvoie pas de valeur et que son paramètre est passé par référence.

function reduceToFirstItem(&$x) { $x=$x[0]; }
array_walk($cond, 'reduceToFirstItem');
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top