Basculer entre deux chaînes dans le tableau PHP
P粉710478990
P粉710478990 2023-09-04 19:06:47
0
2
597
<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粉710478990
P粉710478990

répondre à tous(2)
P粉029327711

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']++;
}
P粉166779363

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']]--;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal