Почему элемент, который выделяется из массива, не является строкой в ​​PHP - PullRequest
0 голосов
/ 21 сентября 2018
$requests = array("add : milk",
"remove: milk",
"add : pickles");
$request_option = "add : remove : checkout : quantity_upd";
$request_option_split = explode(":",$request_option);
// print_r($request_option_split);
function shoppingCart($requests,$option){
  $j = sizeof($requests);
  $basket = array();
  if ($option[1] == 'remove') {
    echo "hahah";
  }else{
    echo "f***";
  }
  for ($i=0 ; $i < $j ; $i++) { 
    $temp = explode(":",$requests[$i]);
    // print_r($temp);

    switch ($option[1]) {
      case $option[0]://add
        $basket[$temp[1]] = 1;
      break;

      case $option[1]://remove
      echo "asdf";
      unset($basket[0]);
      break;

      case $option[3]://quantity_upd
      $basket[$temp[1]] = $basket[$temp[1]] + intval($temp[2]);
      break;

      case $option[2]://checkout.
      $j = sizeof($basket);
      for ($i=0; $i < $j; $i++) { 
        unset($basket[$i]);
      }
      break;

      default:
        echo "hello world";
        break;
    }
  }
  print_r($basket);
}
shoppingCart($requests, $request_option_split);

Я пытаюсь отделить каждый элемент от массива, затем, если элемент соответствует опции, он будет выполнен.Например, я выделил первый элемент массива $request, и $temp[0] будет "add".Однако, когда я помещаю $temp[0] в оператор switch, он не равен строке "add".Это так странно.

Я использую функцию gettype, чтобы проверить это, каждый элемент, который я получил из массива $request, является строкой.но они не равны "string".Я так запутался.Я тоже попробовал $str = (string)$temp[0].это все еще не работает.Может кто-нибудь объяснить мне, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...