Wechseln Sie zwischen zwei Zeichenfolgen im PHP-Array
P粉710478990
P粉710478990 2023-09-04 19:06:47
0
2
488

Ich habe ein Array mit zwei Werten $arr = ['up', 'down'];. Wenn jemand positiv stimmt ($vote = 'up';), sollte das Up-Feld in der Datenbank um 1 erhöht und das Down-Feld um 1 dekrementiert werden.

Ich kann die if else-Bedingung verwenden:

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

Aber ich frage mich, ob diese Zeit verkürzt werden kann. Ich habe über arr = ['up' => 'down']; nachgedacht, aber leider komme ich gerade nicht weiter. Hast Du eine Idee? Danke!

P粉710478990
P粉710478990

Antworte allen (2)
P粉029327711

虽然您要求更短,但有时我认为更清晰更好。大多数其他答案都包括额外的数组或三元组,它们完全没问题并且 100% 有效,但我认为代码的意图并不那么明显。对我来说,我会保留if并仅使用++--进行递增和递减。我认为“业务规则”非常明显,代码读起来也很干净。

再一次,不完全是你所要求的,只是我的两分钱。

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

    解决方案1:

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

    解决方案2:

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

    解决方案 3(如果$voteModel中“up”为索引 1,“down”为索引 0):

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

    解决方案 3b(如果我们想保留关联键):

    $arr = ['down','up']; $voteModel[$arr[$vote==='up']]++; $voteModel[$arr[$vote==='down']]--;
      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!