PHP strcmp没有给出正确的输出

Nul*_*teя 1 php strcmp

我正在比较两个字符串strcmp(1,2),我得到"-1",我的代码在下面

  <?php
    echo strcmp(1,2);
   ?>
Run Code Online (Sandbox Code Playgroud)

输出:-1

在此输入图像描述

请让我知道为什么我得到假的-1,以及如何处理它?

Mic*_*son 6

1小于2,strcmp定义为返回:

如果str1小于str2,则返回<0; 如果str1大于str2则> 0,如果它们相等则为0.

因此,行为是预期的.


请注意以下警告:

如果您依赖strcmp进行安全字符串比较,则两个参数都必须是字符串,否则结果会非常难以预测.例如,您可能会收到意外的0,或返回NULL,-2,2,3和-3的值.

来自对文档页面的评论strcmp.


PHP充满了这种意想不到的行为.在你的情况下,我会确保两个参数都被转换为字符串以避免混淆:

$first = 1;
$second = 2;
echo strcmp((string)$first, (string)$second);
Run Code Online (Sandbox Code Playgroud)