Question rapide, le plus probable qu'un ancien combattant sera facile, ou peut-être que je demande trop.
J'ai ce code pour Laravel en PHP, je ne suis pas fan pour faire une foreach, y a-t-il une meilleure façon? Je suppose qu'il devrait s'agir d'une fonction existante qui remplace mes valeurs d'arr à la correspondance des clés sur Arr2, mais je ne sais pas p>
c'est vraiment important de ne pas changer la commande. P>
$arr= ['filters', 'repeat', 'via', 'type']; $arr2= [ 'filters' => 'text1', 'repeat' => 'text2', 'via' => 'text3', 'type' => 'text4', ]; foreach($arr as $k) $res[]=$arr2[$k]; return $res;
5 Réponses :
Si vous voulez juste que les valeurs de tableau, vous pouvez utiliser la fonction array_values () code>.
['text1', 'text2', 'text3', 'text4']
Mais vous ignorez le premier tableau
Je ne pense pas que cela mérite un bowvote, car l'exemple de votre question n'est pas clair. Le cas que vous avez fourni fonctionnera simplement bien avec array_values () code>. La prochaine fois, fournissez un exemple plus complet.
Vous pouvez utiliser la fonction Si vous ne voulez pas conserver les touches, vous pouvez utiliser le Array_only code> de Laravel
array_values Code> fonction aussi: p>
mais ce n'est pas toujours dans le même ordre
Vous pouvez le faire en utilisant array_map code>.
$arr= ['filters', 'repeat', 'via', 'type'];
$arr2 = [
'filters' => 'text1',
'repeat' => 'text2',
'via' => 'text3',
'type' => 'text4',
];
$res = array_map(function($key) use($arr2) {
return $arr2[$key];
}, $arr);
print_r($res);
Oui, assez propre et a l'air professionnel, c'est ce que je cherchais, merci beaucoup: D
Oui, deux manières:
array_values () code>
, en supposant les valeurs de $ Arr code> sont exactement dans le même ordre que les clés dans $R2 code> et ont toujours les mêmes clés. Je suppose que ce n'est pas exactement ce que vous vouliez dire, mais c'est ce que votre exemple montre. Si c'est le cas, alors c'est aussi simple que: li>
ol> xxx pré>
- Utilisez
array_map () code>
pour mapper les valeurs d'un tableau ( Dans ce cas $ arr code>) à un nouveau tableau ( $ res code>): li>
OL> $mapper = function($k) use ($arr2) {
return $arr2[$k];
};
$res = array_map($mapper, $arr);
C'est bon, et oui, je peux ajouter une option nulle, merci
Vous pouvez utiliser Collection à Laravel
Ce serait génial de garder cela comme une collection, malade garder cela à l'esprit, merci: D
une autre manière
$ res = array_intersect_key ($ arr2, array_flip ($ arr)); code>, afin que vous ne perdiez pas la correspondance