-1

UNION流に団結する方法を探しているとこんな感じのリスト。

87401
87441
87561
86421
57401

配列などに変換すると、874 が 1 つしかないことに注意してください。

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 に答える