11
votes

Ajout d'un élément dans un tableau

Comment puis-je ajouter conditionnellement 'B' => 'xyz' dans la matrice ci-dessous, dans l'instruction Array ()?

$ arr = tableau ('a' => abc)

L'opérateur ternaire ne me permet pas de le faire


1 commentaires

Comme $ arr = tableau ('a' => abc, $ condition? ('B' => 'xyz'):,); ou quelque chose ...


7 Réponses :


7
votes

Vous avez besoin de deux étapes:

$arr = array('a' => 'abc');

if(condition) {
    $arr['b'] = 'xyz';
}


0 commentaires

2
votes
$arr = array('a' => 'abc', $condition ? 'b' : '' => $condition ? 'xyz' : '');
$arr = array_filter($arr);

0 commentaires

1
votes

Je ne sais pas ce que vous demandez; Pourquoi pas

if (condition) { 
   $arr['b'] = 'xyz';
}


2 commentaires

@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';}



0
votes

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.


0 commentaires

10
votes
$a = array('a' => 'abc') + ($condition ? array('b' => 'xyz') : array());

2 commentaires

@ 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.



6
votes

C'est une ancienne question, mais vous pouvez y accomplir avec Array_Merge:

array_merge(['foo' => 'bar'], $condition ? ['baz' => 'boo' ] : []);


0 commentaires

0
votes

Utilisation de l'opérateur ES6 Spread:

p>

const arr = [
  'a',
  ...(true ? ['b', 'c'] : []),
  ...(false ? ['d', 'e'] : []),
  'f',
]

console.log(arr)


0 commentaires