【问题标题】:PHP switch case statement giving problem on first loopPHP switch case语句在第一个循环中给出问题
【发布时间】:2022-01-05 21:15:31
【问题描述】:

我试图在学校做一些 PHP 练习,但我遇到了这个......

我的代码:

<?php

$arr = [ 3, 4, 5, 6, "apple", 7.2, -10, "banana", 5, 5.1, 6, "okke" ];

$item = 0;
while ( $item < count($arr) ) {
    echo $item." - ";

    switch ( $item ) {
        case $arr[ $item ] == 5:
            echo $arr[ $item ]." --> This is 5<br />";
            break;

        case $arr[ $item ] == 6:
            echo $arr[ $item ]." --> This is 6<br />";
            break;

        default:
            echo " --> Not found<br />";
    }

    $item++;
}
?>

这是我得到的结果:

0 - 3 --> This is 5
1 - --> Not found
2 - 5 --> This is 5
3 - 6 --> This is 6
4 - --> Not found
5 - --> Not found
6 - --> Not found
7 - --> Not found
8 - 5 --> This is 5
9 - --> Not found
10 - 6 --> This is 6
11 - --> Not found

但在第一行我应该得到:

0 - --> 未找到

为什么 Switch 不能正常工作??

【问题讨论】:

  • switch 的用法不太好。如果你正在使用它,应该有switch ( $arr[$item] )。比cases 你可以使用简单的case 5: ...; case 6: ...; default 没有比较。
  • 谢谢@pavel 我用 switch($arr[$item]) 解决了,但是为什么会这样呢?

标签: php debugging switch-statement


【解决方案1】:

你做错了开关。 :)

switch ( $item ) { 应该包含您正在搜索的项目。

这里的固定代码:

<?php

$arr = [ 3, 4, 5, 6, "apple", 7.2, -10, "banana", 5, 5.1, 6, "okke" ];

$item = 0;
while ( $item < count($arr) ) {
    echo $item." - ";
    echo $arr[$item];

    switch ( $arr[ $item ] ) {
        case 5:
            echo $arr[ $item ]." --> This is 5<br />";
            break;

        case 6:
            echo $arr[ $item ]." --> This is 6<br />";
            break;

        default:
            echo " --> Not found<br />";
    }

    $item++;
}
?>

或者这将是另一种解决方案(不是理想的解决方案,但我希望这将为您提供更多示例:)

<?php

$arr = [ 3, 4, 5, 6, "apple", 7.2, -10, "banana", 5, 5.1, 6, "okke" ];

$item = 0;
while ( $item < count($arr) ) {
    echo $item." - ";
    echo $arr[$item];

    switch ( true ) {
        case $arr[ $item ] === 5:
            echo $arr[ $item ]." --> This is 5<br />";
            break;

        case $arr[ $item ] === 6:
            echo $arr[ $item ]." --> This is 6<br />";
            break;

        default:
            echo " --> Not found<br />";
    }

    $item++;
}
?>

【讨论】:

  • 谢谢,我用switch($arr[$item])解决了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多