为了账号安全,请及时绑定邮箱和手机立即绑定

两个字符串相同,但比较时不相等

两个字符串相同,但比较时不相等

PHP
翻翻过去那场雪 2022-10-28 14:57:24
我有一个我自己无法解决的小问题,我正在比较两个相同的字符串,一个来自数据库,另一个来自文本文件,除了最后一个之外,值总是相等的文本文件中的数组代码while (!feof($monfichier)) {    $line = fgets($monfichier);    $pieces = explode(" ", $line);    $factureAgent[$nbb][0] = $pieces[0]; //id client    $factureAgent[$nbb][1] = $pieces[1]; //consommation annuelle    $factureAgent[$nbb][2] = $pieces[2]; //année    $factureAgent[$nbb][3] = $pieces[3]; //id agent    $month = explode(":", $pieces[4]);    $factureAgent[$nbb][4] = $month[1]; //janvier    $month = explode(":", $pieces[5]);    $factureAgent[$nbb][5] = $month[1]; //fevrier    $month = explode(":", $pieces[6]);    $factureAgent[$nbb][6] = $month[1]; //mars    $month = explode(":", $pieces[7]);    $factureAgent[$nbb][7] = $month[1]; //avril    $month = explode(":", $pieces[8]);    $factureAgent[$nbb][8] = $month[1]; //mai    $month = explode(":", $pieces[9]);    $factureAgent[$nbb][9] = $month[1]; //juin    $month = explode(":", $pieces[10]);    $factureAgent[$nbb][10] = $month[1]; //juillet    $month = explode(":", $pieces[11]);    $factureAgent[$nbb][11] = $month[1]; //aout    $month = explode(":", $pieces[12]);    $factureAgent[$nbb][12] = $month[1]; //septembre    $month = explode(":", $pieces[13]);    $factureAgent[$nbb][13] = $month[1]; //octobre    $month = explode(":", $pieces[14]);    $factureAgent[$nbb][14] = $month[1]; //novembre    $month = explode(":", $pieces[15]);    $factureAgent[$nbb][15] = $month[1]; //decembre    $nbb++;}这是代码echo "<br>".$row[0]."is".$factureAgent[$i][$nb]."<br>";if ($année==$annéeComp[0]) {  if ($row[0]!=$factureAgent[$i][$nb]) {    echo "<br>".$row[0]."is".$factureAgent[$i][$nb]."<br>";    $ok = false;  }  $nb++;  $nbr++;}输出25is2550is5087is87115is115200is200250is250400is400550is500600is600650is650800is800950is950950is950看图片我正在从文本文件中读取的行1 2000 2019 1 01:25 02:50 03:87 04:115 05:200 06:250 07:400 08:550 09:600 10:650 11:800 12:95013 2000 2019 1 01:45 02:90 03:150 04:300 05:600 06:800 07:1000 08:1300 09:1450 10:1600 11:1800 12:2000看图片
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

比较来自不同来源的字符串可能会导致意外结果。

您可以做的一件事是将您的值转换为相同的类型,然后进行比较。例如:

if (intval('1') === intval('01')) ...

这样你就可以得到整数的两侧,它只是一个整数比较。

请注意,如果您转换一个非数字的值,该函数将始终返回 0


查看完整回答
反对 回复 2022-10-28
?
炎炎设计

TA贡献1808条经验 获得超4个赞

那可能是您使用==而不是===. 如果您不想考虑案例,我可能会建议使用strcasecmp,或者strcmp如果您希望考虑案例,我可能会建议使用。

strcasecmp()

strcmp()

注意将这些函数的结果与 0 进行比较,===以确保它们相等,例如: if (strcmp('Hello, 'Hello') === 0) ...

使用时要注意=====

(1 == '1') //Equal -- not taking into consideration the type but just the value

(1 === '1') //Not equal -- taking into consideration the type and the value

仅供您参考,不供您使用!=!==


查看完整回答
反对 回复 2022-10-28
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信