在PHP中,二进制安全字符串比较是什么意思?
包含此描述的PHP函数的一些示例是strcmp()和strcasecmp(),它们在内部是如何工作的?这种二进制比较是如何工作的? 我无法理解为什么这些函数返回-1、0和1(或0) 提前谢谢在PHP中,二进制安全字符串比较是什么意思?,php,string,string-comparison,Php,String,String Comparison,包含此描述的PHP函数的一些示例是strcmp()和strcasecmp(),它们在内部是如何工作的?这种二进制比较是如何工作的? 我无法理解为什么这些函数返回-1、0和1(或0) 提前谢谢 如果两个字符串的起始部分相同,则会从两个字符串中截断它们 将结果字符串与两种可能的结果进行比较: 如果结果字符串之一是空字符串,则返回非空字符串的长度(符号取决于向函数传递参数的顺序) 在任何其他情况下,只比较第一个字符的数值。无论数值之间的差异有多大,结果都是+1或-1 问题是“二进制安全”是什么意思
- 如果结果字符串之一是空字符串,则返回非空字符串的长度(符号取决于向函数传递参数的顺序)
- 在任何其他情况下,只比较第一个字符的数值。无论数值之间的差异有多大,结果都是+1或-1
问题是“二进制安全”是什么意思,还是为什么比较返回-1、0和1?@apokryfos我的意思是“二进制安全字符串比较”,我认为这个操作会导致-1、0和1(或0),但我不知道它是如何工作的。二进制安全与比较结果的-1、0和1值无关。您可以有一个不是比较的二进制安全操作,也可以有一个不是二进制安全的比较,但仍然返回-1、0和1。我知道二进制安全字符串比较操作不一定与-1、0和-1相关(或者根据这些函数的PHP文档为0)但我要理解的是这些函数在内部是如何工作的。下面的文档中的答案是否不足以解释这一点?我花了一点时间才理解它是如何工作的,我发现关键是第一个字符。谢谢分享这个链接,它帮了我很多。关于这个例子也有很大帮助: