【问题标题】:In PHP what does it mean by a binary safe string comparison? [closed]在 PHP 中,二进制安全字符串比较是什么意思? [关闭]
【发布时间】:2020-11-05 17:30:47
【问题描述】:

包含此描述的PHP函数的一些示例是strcmp()和strcasecmp(),它们在内部是如何工作的?这种二进制比较是如何工作的? 我一直无法理解为什么这些函数返回 -1、0 和 1(或 0)

提前致谢

【问题讨论】:

  • 问题是“二进制安全”是什么意思,还是为什么比较返回 -1 ,0 和 1 ?
  • @apokryfos 我的意思是“二进制安全字符串比较”,我认为这个操作会导致 -1、0 和 1(或 0),但我无法弄清楚它是如何工作的。
  • 二进制安全与比较结果的 -1 ,0 和 1 值无关。您可以进行不是比较的二进制安全操作,也可以进行不是二进制安全但仍返回 -1、0 和 1 的比较。
  • 我了解二进制安全字符串比较操作不一定与-1、0和-1相关(或者根据这些函数的PHP文档, 0)但是什么我正在处理了解这些功能是如何在内部工作的。
  • 以下来自文档的答案是否不足以解释这一点?

标签: php string string-comparison


【解决方案1】:
  1. 如果两个字符串具有相同的 BEGINNING 部分,则会从两个字符串中截断它们。
  2. 将生成的字符串与两种可能的结果进行比较:
  • 如果结果字符串之一是空字符串,则返回非空字符串的长度(符号取决于您将参数传递给函数的顺序)
  • 在任何其他情况下,仅比较第一个字符的数值。无论数值之间的差异有多大,结果都是 +1 或 -1。

source

【讨论】:

  • 我花了一点时间才明白它是如何工作的,我看到关键是第一个字符。感谢您分享链接,它对我帮助很大。问候
  • 这个例子也很有帮助:php.net/manual/en/function.strcmp.php#110975
猜你喜欢
  • 2011-03-16
  • 2012-07-23
  • 2013-11-07
  • 2020-12-23
  • 2010-11-20
  • 2017-02-24
  • 2011-11-22
  • 2022-11-27
  • 1970-01-01
相关资源
最近更新 更多