Rumah  >  Soal Jawab  >  teks badan

Beralih antara dua rentetan dalam tatasusunan PHP

<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粉710478990P粉710478990382 hari yang lalu521

membalas semua(2)saya akan balas

  • P粉029327711

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

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

    balas
    0
  • P粉166779363

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

    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']]--;

    balas
    0
  • Batalbalas