字符串比较的行为不同

发布于 2024-10-21 15:41:49 字数 348 浏览 1 评论 0原文

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

尝试:

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

因为我只想输出 :

A - 1
B - 4

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

我做错了什么?

谢谢

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

TRY:

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

Because I just want to output :

A - 1
B - 4

But I don't see anything in the output.

what do I wrong?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情丝乱 2024-10-28 15:41:50

当你第一次跳出循环时,你在输出中什么也得不到。

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

Ideone

要解决此问题,请不要使用 ==,而是使用 strcmp 相反,它会在比较之前将数字键转换为字符串,或者您可以使用 === 来检查类型和值。

Ideone

You get nothing in the output as you break out of the loop the very fist time.

In the first iteration $k with value 0 which is numeric is compared with "Total" which is a string and this comparison returns true because PHP will convert the string "total" to a number before comparison and "total" when converted to number is 0.

Ideone

To fix this don't use ==, use strcmp instead which will convert the numeric keys to string before comparison or you can use === which checks type as well as value.

Ideone

手心的海 2024-10-28 15:41:50

echo $v."
";
放在 else 语句中......

Put echo $v."<br>"; in an else statement......

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文