字符串比较表现不同

kn3*_*n3l 2 php string equality string-comparison

$x = array(3) {
   [0]=>       "A - 1"
   [1]=>       "B - 4"
   ["Total"]=>     "5"
 }
Run Code Online (Sandbox Code Playgroud)

尝试:

foreach($x as $k=>$v){
   if($k=="Total"){break;}
    echo $v."<br>";
 }
Run Code Online (Sandbox Code Playgroud)

因为我只想输出:

A - 1
B - 4
Run Code Online (Sandbox Code Playgroud)

但我在输出中没有看到任何内容.

我错了什么?

谢谢

cod*_*ict 5

当你在第一时间突破循环时,输出中没有任何东西.

在第一次迭代中$k,将value 0与numeric进行比较,并将其与字符串进行比较,"Total"并且此比较将返回,true因为PHP会"total"在比较之前将字符串"total"转换为数字,并在转换为数字时进行转换0.

Ideone

要解决此问题,请不要使用==,strcmp而是在比较之前使用将数字键转换为字符串,或者您可以使用===哪种检查类型以及值.

Ideone