Beralih antara dua rentetan dalam tatasusunan PHP
P粉710478990
P粉710478990 2023-09-04 19:06:47
0
2
582
<p>Saya mempunyai tatasusunan dengan dua nilai <kod>$arr = ['atas', 'bawah'];</code>. Jika seseorang mengundi (<code>$vote = 'up';</code>), medan atas dalam pangkalan data hendaklah ditambah dengan 1 dan medan bawah hendaklah dikurangkan dengan 1. </p> <p>Saya boleh menggunakan jika lain syarat:</p> <pre class="brush:php;toolbar:false;">if ($undian === 'up') { $voteModel['up'] = $voteModel['up'] + 1; $voteModel['down'] = $voteModel['down'] - 1; } lain { $voteModel['up'] = $voteModel['up'] - 1; $voteModel['down'] = $voteModel['down'] + 1; } </pra> <p>Tetapi saya tertanya-tanya sama ada masa ini boleh dipendekkan. Saya sedang memikirkan tentang <code>arr = ['up' => 'down'];</code> Awak ada sebarang idea? Terima kasih! </p>
P粉710478990
P粉710478990

membalas semua(2)
P粉029327711

Walaupun anda meminta lebih pendek, kadangkala saya rasa lebih jelas adalah lebih baik. Kebanyakan jawapan lain termasuk tatasusunan tambahan atau tiga kali ganda, yang benar-benar baik dan 100% sah, tetapi saya tidak fikir niat kod itu begitu jelas. Bagi saya, saya akan menyimpan if 并仅使用 ++-- untuk kenaikan dan pengurangan. Saya rasa "peraturan perniagaan" cukup jelas dan kod itu dibaca dengan bersih.

Sekali lagi, bukan apa yang anda minta, hanya dua sen saya.

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

Penyelesaian 1:

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

Penyelesaian 2:

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

Penyelesaian 3 (jika "naik" dalam $voteModel ialah indeks 1 dan "bawah" ialah indeks 0):

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

Penyelesaian 3b (jika kita mahu menyimpan kunci yang berkaitan):

$arr = ['down','up'];
$voteModel[$arr[$vote==='up']]++;
$voteModel[$arr[$vote==='down']]--;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan