recherche

Maison  >  Questions et réponses  >  le corps du texte

Basculer entre deux chaînes dans le tableau PHP

<p>J'ai un tableau avec deux valeurs <code>$arr = ['up', 'down'];</code>. Si quelqu'un vote pour (<code>$vote = 'up';</code>), le champ up dans la base de données doit être incrémenté de 1 et le champ down doit être décrémenté de 1. </p> <p>Je peux utiliser la condition if else : </p> <pre class="brush:php;toolbar:false;">if ($vote === 'up') { $voteModel['up'] = $voteModel['up'] + 1; $voteModel['down'] = $voteModel['down'] - 1; } autre { $voteModel['up'] = $voteModel['up'] - 1; $voteModel['down'] = $voteModel['down'] + 1; } ≪/pré> <p>Mais je me demande si ce délai peut être raccourci. Je pensais à <code>arr = ['up' => 'down'];</code> mais malheureusement je n'arrive à rien pour le moment. Avez-vous une idée? Merci! </p>
P粉710478990P粉710478990447 Il y a quelques jours585

répondre à tous(2)je répondrai

  • P粉029327711

    P粉0293277112023-09-05 12:26:32

    Bien que vous ayez demandé une version plus courte, je pense parfois que plus clair est préférable. La plupart des autres réponses incluent des tableaux ou des triples supplémentaires, qui sont tout à fait corrects et valides à 100 %, mais je ne pense pas que l'intention du code soit aussi évidente. Pour moi, je garderais if 并仅使用 ++-- pour les incréments et les décréments. Je pense que les "règles métier" sont assez évidentes et le code se lit clairement.

    Encore une fois, pas exactement ce que vous avez demandé, juste mes deux cents.

    if ('up' === $vote) {
        $voteModel['up']++;
        $voteModel['down']--;
    } else {
        $voteModel['up']--;
        $voteModel['down']++;
    }
    

    répondre
    0
  • P粉166779363

    P粉1667793632023-09-05 00:11:58

    Solution 1 :

    $arg = $vote === 'up' ? [1,-1] : [-1,1];
    $voteModel['up'] += $arg[0];
    $voteModel['down'] += $arg[1];

    Solution 2 :

    $voteModel['up'] += ($vote === 'up' ? 1 : -1);
    $voteModel['down'] += ($vote !== 'up' ? 1 : -1);

    Solution 3 (si "up" en $voteModel est l'index 1 et "down" est l'index 0) :

    $voteModel[$vote==='up']++;
    $voteModel[$vote==='down']--;

    Solution 3b (si on souhaite conserver les clés associées) :

    $arr = ['down','up'];
    $voteModel[$arr[$vote==='up']]++;
    $voteModel[$arr[$vote==='down']]--;

    répondre
    0
  • Annulerrépondre