Comment puis-je ajouter conditionnellement L'opérateur ternaire ne me permet pas de le faire p> 'B' => 'xyz' code> dans la matrice ci-dessous, dans l'instruction Array ()? p>
$ arr = tableau ('a' => abc) code> p>
7 Réponses :
Vous avez besoin de deux étapes:
$arr = array('a' => 'abc'); if(condition) { $arr['b'] = 'xyz'; }
$arr = array('a' => 'abc', $condition ? 'b' : '' => $condition ? 'xyz' : ''); $arr = array_filter($arr);
Je ne sais pas ce que vous demandez; Pourquoi pas
if (condition) { $arr['b'] = 'xyz'; }
@Bitchgotapenis: Ensuite, vous devez vivre avec le code laid. Il n'y a pas d'autre moyen.
Qu'est-ce qui le rend le code laid? parce que ce n'est pas sur une ligne? mettez-le sur une ligne. si (condition) {$ arr ['b'] = 'xyz';}
ternaire signifie trois termes. Vous devez avoir une condition, une vraie partie et une fausse pièce. Il faut la place de la condition si la condition est une partie true tout autre partie. Vous ne pouvez pas laisser la troisième partie. Il y a un raccourci en 5.3 qui vous permet de laisser la partie true si la condition peut également être utilisée comme une partie réelle, mais elle a toujours trois termes. P>
$a = array('a' => 'abc') + ($condition ? array('b' => 'xyz') : array());
@ user815340: Il est particulièrement plus difficile de comprendre ... Strive toujours après la lisibilité.
@Felixkling Bien que la lisibilité n'est pas toujours possible.
C'est une ancienne question, mais vous pouvez y accomplir avec Array_Merge:
array_merge(['foo' => 'bar'], $condition ? ['baz' => 'boo' ] : []);
Utilisation de l'opérateur ES6 Spread:
p>
const arr = [ 'a', ...(true ? ['b', 'c'] : []), ...(false ? ['d', 'e'] : []), 'f', ] console.log(arr)
Comme
$ arr = tableau ('a' => abc, $ condition? ('B' => 'xyz'):,); code> ou quelque chose ...