2015-03-31 97 views
1

比如我有数组是这样的:PHP创建数组从价值的新数组,如果数组具有相同的价值

Array 
(
    [0] => 1 
    [1] => 1 
    [2] => 1 
    [3] => 1 
    [4] => 5 
    [5] => 5 
    [6] => 5 
    [7] => 6 
    [8] => 7 
    [9] => 8 
    [10] => 9 
) 

我的问题是,如何创造新的数组这样。因此,创建新的阵列为相同的值:

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 1 
      [2] => 1 
      [3] => 1 
     ) 

    [1] => Array 
     (
      [0] => 5 
      [1] => 5 
      [2] => 5 
     ) 

    [2] => 6 
    [3] => 7 
    [4] => 8 
    [5] => 9 
) 

请帮助我和我的英语不好。

回答

2
$result = []; 
foreach (array_count_values($array) as $value => $occurrences) { 
    $result[] = $occurrences == 1 ? $value : array_fill(0, $occurrences, $value); 
} 

请参阅http://php.net/array_count_values。事实上,这可能确实是你想要的;我没有看到多次重复相同价值的观点。

+0

感谢@deceze ......非常感谢:) 但如何,如果相同的价值不仅1,例如1,1,1和5,5,5。这段代码是一样的吗? – 2015-03-31 06:56:33

0

试试这个使用array_count_values

<?php 

$tr = Array(1,1,1,1,5,5,5,6,7,8,9,10); 

$array= array_count_values($tr); 
var_dump($array); 


$arry1 = array(); 
foreach($array as $key =>$val){ 
if ($val>1){ 
    $tmp =array(); 
    for($i= 0;$i<$val;$i++){ 
     $tmp[] =$key; 
    } 
    $arry1[] =$tmp; 
} 
else{ 
    $arry1[] =$key; 
} 
} 

var_dump($arry1); 
?>