2015-03-31 94 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); 
?>