-1

寻找一种方法以 UNION 方式统一这样的列表。

87401
87441
87561
86421
57401

放入一个数组或类似的东西,注意只有一个 874。

874
875
864
574

这是我想出的,它有效,但我正在寻找一种方法,我不必遍历数组 3-> 4 次

$l=array(87401,87402,87400,87801,73567,80031);
print_r($l);
function sub(&$item1, $key, $n=3)
{
    $item1 = substr($item1,0,$n);
}

array_walk($l,'sub',3);
print_r( array_unique($l));
//output is below
Array ( [0] => 874 [3] => 878 [4] => 735 [5] => 800 )
4

2 回答 2

3

我想出了这个:

$nums = array(87401,87441,87561,86421,57401,'4.1007995605469E-5','3.6001205444336E-5');
$result = array();
foreach($nums as $n){
    $num = floor(substr($n,0,3));
    if(!in_array($num,$result)){
        $result[] = $num;
    }
}
print_r($result);
于 2012-11-21T19:05:16.917 回答
2
$arr=array(87401, 87441, 87561, 86421, 57401);

$callback = function($num) { return substr($num,0,3); };
$newarr = array_unique(array_map($callback, $arr));
于 2012-11-21T19:15:34.000 回答