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.  

あなたの例では、 5 !== "005" と 4 !== "004" であるため、 $intersect は空の配列になります。

于 2008-11-03T18:14:24.553 に答える
3

$ 猫 > 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] => 4 [2] => 5 )

于 2008-11-03T18:13:49.877 に答える