0
votes

Amélioration de la matrice PHP

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;


1 commentaires

une autre manière $ res = array_intersect_key ($ arr2, array_flip ($ arr)); , afin que vous ne perdiez pas la correspondance


5 Réponses :


1
votes

Si vous voulez juste que les valeurs de tableau, vous pouvez utiliser la fonction array_values ​​() code>.

['text1', 'text2', 'text3', 'text4']


2 commentaires

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 ​​() . La prochaine fois, fournissez un exemple plus complet.



2
votes

Vous pouvez utiliser la fonction Array_only de Laravel xxx

Si vous ne voulez pas conserver les touches, vous pouvez utiliser le array_values ​​ fonction aussi: xxx


1 commentaires

mais ce n'est pas toujours dans le même ordre



3
votes

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


1 commentaires

Oui, assez propre et a l'air professionnel, c'est ce que je cherchais, merci beaucoup: D



2
votes

Oui, deux manières:

  1. Utilisez 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é>
    1. 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);
      


1 commentaires

C'est bon, et oui, je peux ajouter une option nulle, merci



2
votes

Vous pouvez utiliser Collection à Laravel XXX < / p>


1 commentaires

Ce serait génial de garder cela comme une collection, malade garder cela à l'esprit, merci: D