亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為不同的數組值創建 SWITCH 案例

為不同的數組值創建 SWITCH 案例

PHP
動漫人物 2022-07-09 18:10:14
如何編寫 SWITCH 案例的代碼以給出 x 和 y 數值?x 和 y 在一個數組中。數組中的數據來自數據庫。<?php        $main_link = mysqli_connect('localhost', 'root', '','WMYC');        $a1 = mysqli_fetch_array(mysqli_query($main_link, "SELECT * FROM teams WHERE team='t1' AND round='r1'"));        $b1 = mysqli_fetch_array(mysqli_query($main_link, "SELECT * FROM teams WHERE team='t2' AND round='r1'"));        $c1 = mysqli_fetch_array(mysqli_query($main_link, "SELECT * FROM teams WHERE team='t3' AND round='r1'"));        $d1 = mysqli_fetch_array(mysqli_query($main_link, "SELECT * FROM teams WHERE team='t4' AND round='r1'"));        $array = array($a1['xy'], $b1['xy'], $c1['xy'], $d1['xy']);        print_r($array); // will get Array ( [0] => x [1] => y [2] => x [3] => x )         print_r(array_count_values($array)); // will get Array ( [x] => 3 [y] => 1 )    switch(isset($_POST['round1']))    {            case //array_count_values($array) == ( [x] => 3 [y] => 1 ):          //value of x = 1 and value of y= -3            break;            case //array_count_values($array) == ( [x] => 2 [y] => 2 ):          //value of x = 2 and value of y= -2            break;            case //array_count_values($array) == ( [x] => 1 [y] => 3 ):          //value of x = 3 and value of y= -1            break;            case //array_count_values($array) == ( [x] => 4 ):          //value of x = -1            break;            case //array_count_values($array) == ( [y] => 4 ):          //value of y = 1    }        ?>如果有比 switch case 更好更簡單的方法請指教
查看完整描述

2 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

由于計數將始終加起來為 4,因此您無需比較整個數組,只需獲取計數x并在switch語句中使用它即可。


$counts = array_count_values($array);

if (isset($_POST['round1'])) {

    switch (@$counts['x']) {

    case 3:

        // do something for x=3 y=1

        break;

    case 2:

        // do something for x=2 y=2

        break;

    case 1:

        // do something for x=1 y=3

        break;

    default:

        // do something for x=0 y=4

}

當計數為時, @before會$counts['x']抑制警告(因為數組中0不會有元素);x然后我們進入這個default:案子。


查看完整回答
反對 回復 2022-07-09
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

您錯誤地使用了 switch 語句。


Switch 表示,基于 switch() 中的值,根據其值(case 語句)執行一些代碼。


所以你所說的:switch(isset($_POST['round1'])) 是基于現有的 $_POST['round1'] 的價值,做點什么。isset 返回真/假。如果 $_POST['round1'] 存在,它將返回 true,否則將返回 false。


你不想在這里使用 switch 語句,你想使用 if / else。


if (array_count_values($array) == ( [x] => 3 [y] => 1 ) {

  //do something

}

elseif (array_count_values($array) == ( [x] => 2 [y] => 2 ) {

  //do something

}

$_POST['round1'] isset 是否似乎對您的代碼沒有任何影響,但如果它很重要,您可以執行以下操作:


if (isset($_POST['round1'])) {

  if (array_count_values($array) == ( [x] => 3 [y] => 1 ) {

    //do something

  }

  elseif (array_count_values($array) == ( [x] => 2 [y] => 2 ) {

    //do something

  }

}

else {

  //handle $_POST['round1'] not being set

}


查看完整回答
反對 回復 2022-07-09
  • 2 回答
  • 0 關注
  • 108 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號