PHP array_intersect() - 它如何处理不同的类型?

时间:2008-11-03 18:11:15

标签: php arrays casting types array-intersect

如果我的数组值基本上是各种数字和另一个整数数组的零填充字符串表示形式,那么array_intersect()仍会匹配不同类型的元素吗?

例如,这会起作用吗?

$arrayOne = array('0003', '0004', '0005');
$arrayTwo = array(4, 5, 6);

$intersect = array_intersect($arrayOne, $arrayTwo);

// $intersect would then be = "array(4, 5)"

如果没有,那么最有效的方法是什么?只需循环并比较,或循环并将所有内容转换为整数并运行array_intersect()之后?

2 个答案:

答案 0 :(得分:4)

来自http://it2.php.net/manual/en/function.array-intersect.php

Note:  Two elements are considered equal if and only if
(string) $elem1 === (string) $elem2.
In words: when the string representation is the same.  

在你的例子中,$ intersect将是一个空数组,因为5!==“005”和4!==“004”

答案 1 :(得分:3)

$ cat> test.php的

<?php
$arrayOne = array('0003', '0004', '0005');
$arrayTwo = array(4, 5, 6);

$intersect = array_intersect($arrayOne, $arrayTwo);

print_r($intersect );

?>

$ php test.php

阵 ( )

$

所以不,它不会。但是如果你添加

foreach($arrayOne as $key => $value)
{
   $arrayOne[$key] = intval($value);
}

你会得到

$ php test.php

阵 (     [1] =&gt; 4     [2] =&gt;五 )