Php 数组_diff_assoc()正在考虑1==";1“;
我从php.net示例运行此代码Php 数组_diff_assoc()正在考虑1==";1“;,php,arrays,Php,Arrays,我从php.net示例运行此代码 <?php $array1 = array(0, 1, 2); $array2 = array("00", "01", "2"); $result = array_diff_assoc($array1, $array2); print_r($result); ?> php.net说:只有当(string)$elem1==(string)$elem2时,key=>value对中的两个值才被认为相等。 而在本例中,它考虑2==“2” 这是怎么发生的?请
<?php
$array1 = array(0, 1, 2);
$array2 = array("00", "01", "2");
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
php.net说:只有当(string)$elem1==(string)$elem2时,key=>value对中的两个值才被认为相等。
而在本例中,它考虑2==“2”
这是怎么发生的?请解释一下
可能是这样的
如果$ele1将整数转换为字符串,即2到“2”,那么为什么它与===运算符进行比较。可能有2==“2”更好的选项,我们不需要将其转换为字符串。如果我错了,请纠正我?如果$ele1将整数转换为字符串,即2到“2”,那么为什么它与===运算符进行比较。可能有2==“2”更好的选项,我们不需要将其转换为字符串。如果我错了,请纠正我?这只是它的实现方式。如果需要另一个比较函数,请使用如果$ele1正在将整数转换为字符串,即2转换为“2”,那么为什么它要与===运算符进行比较。可能有2==“2”更好的选项,我们不需要将其转换为字符串。如果我错了,请纠正我?这只是它的实现方式。
如果需要另一个比较函数,请使用它不会执行类型严格的比较。就像
array_diff
一样,它只比较严格的相等。请参见:两个元素当且仅当(string)$elem1==(string)$elem2时被视为相等。
只是为了澄清:当array_diff_assoc()比较元素2
(整数:2)和“2”
(字符串:2)时整数被转换为字符串,该字符串为==“2”
;因此,两个元素(整数和字符串)被认为是相等的。它不考虑<代码> 2===“2”< /代码>,它考虑“代码>”2”==“2”< /代码>,因为非字符串元素正在被转换为字符串。这就是(string)$elem1
对2
所做的,将其转换为字符串“2”
它不会进行严格的类型比较。就像array_diff
一样,它只比较严格的相等。请参见:两个元素当且仅当(string)$elem1==(string)$elem2时被视为相等。
只是为了澄清:当array_diff_assoc()比较元素2
(整数:2)和“2”
(字符串:2)时整数被转换为字符串,该字符串为==“2”
;因此,两个元素(整数和字符串)被认为是相等的。它不考虑<代码> 2===“2”< /代码>,它考虑“代码>”2”==“2”< /代码>,因为非字符串元素正在被转换为字符串。这就是(string)$elem1对2
所做的,将其转换为字符串“2”
Array
(
[0] => 0
[1] => 1
)