Exploding tableaux en PHP tout en gardant la clé d'origine
Question
Comment puis-je faire ce qui suit sans beaucoup de code compliqué?
- Explode chaque valeur d'un tableau en PHP (je sais genre de comment faire cette étape)
- Jeter la première partie
- Gardez la clé d'origine pour la deuxième partie (je sais qu'il y aura seulement deux parties)
Par cela, je veux dire ce qui suit:
$array[1]=blue,green
$array[2]=yellow,red
devient
$array[1]=green //it exploded [1] into blue and green and discarded blue
$array[2]=red // it exploded [2] into yellow and red and discarded yellow
Je viens de réaliser, je pourrais le faire avec pour chaque boucle ...? Si oui, répondez simplement oui. Je peux une fois je code sais par où commencer.
La solution
donné ceci:
$array[1] = "blue,green";
$array[2] = "yellow,red";
Voici comment faire:
foreach ($array as $key => $value) {
$temp = explode(",", $value, 2); // makes sure there's only 2 parts
$array[$key] = $temp[1];
}
Une autre façon, vous pouvez le faire serait comme ceci:
foreach ($array as $key => $value) {
$array[$key] = preg_replace("/^.+?,$/", "", $value);
}
... ou utiliser une combinaison de substr()
et strpos()
Autres conseils
Essayez ceci:
$arr = explode(',','a,b,c');
unset($arr[0]);
Bien que, vraiment, ce que vous demandez n'a pas de sens. Si vous savez qu'il ya deux parties, vous voulez probablement quelque chose plus proche de celle-ci:
list(,$what_i_want) = explode('|','A|B',2);
foreach ($array as $k => &$v) {
$v = (array) explode(',', $v);
$v = (!empty($v[1])) ? $v[1] : $v[0];
}
Le tableau que vous commencez avec:
$array[1] = "blue,green";
$array[2] = "yellow,red";
Une façon de coder:
function reduction($values)
{
// Assumes the last part is what you want (regardless of how many you have.)
return array_pop(explode(",", $values));
}
$prime = array_map('reduction', $array);
Note: Ceci crée un tableau différent de $array
Par conséquent $array
== $prime
mais est pas $array
=== $prime