1

如果我有一个值数组,这些值基本上是各种数字的零填充字符串表示形式和另一个整数数组,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()

4

2 回答 2

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"

于 2008-11-03T18:14:24.553 回答
3

$ 猫 > 测试.php

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

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

print_r($intersect );

?>

$ php 测试.php

大批 ( )

$

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

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

你会得到

$ php 测试.php

数组( [1] => 4 [2] => 5 )

于 2008-11-03T18:13:49.877 回答