2015-05-15 74 views
0

有什麼辦法獲得相同值的關鍵範圍,並創建一個新的數組?PHP從數組中獲得相同值的範圍

比方說,我們在PHP中的數組像這樣:

$first_array = ['1'=>'a','2'=>'a','3'=>'a','4'=>'b','5'=>'b','6'=>'a','7'=>'a']; 

我怎樣才能得到這個數組?有這個功能嗎?

$second_array = ['1-3'=>'a','4-5'=>'b','6-7'=>'a']; 
+8

你嘗試過什麼 –

+0

計數數組的,算B的在陣列中。創建新的數組 – treegarden

+0

「a」總是與連續數字相關聯嗎?如果不是這樣,輸出結果是否應該反映它們的外觀或「組合」它們,無論它們出現在哪裏?請更具體一些。 – wonderb0lt

回答

0

循環通過它,提取密鑰,生成範圍,並插入到新陣列 -

$first_array = ['1'=>'a','2'=>'a','3'=>'a','4'=>'b','5'=>'b']; 

$flip = array(); 
foreach($first_array as $key => $val) { 
    $flip[$val][] = $key; 
} 

$second_array = []; 
foreach($flip as $key => $value) { 
    $newKey = array_shift($value).' - '.end($value); 
    $second_array[$newKey] = $key; 
} 

輸出

array(2) { 
    ["1 - 3"]=> 
    string(1) "a" 
    ["4 - 5"]=> 
    string(1) "b" 
} 
+0

謝謝。但它不適用於這樣的一些數組:$ first_array = ['1'=>'a','2'=>'a','3'=>'a','4'= > '一個', '5'=> '一個', '6'=> 'b', '7'=> 'b', '8'=> '一個', '9'=> '一個'] ; –

+0

喲有添加檢查。 –

0

關於您的第一個問題,您可以使用foreach()循環獲取每個值的範圍。

$first_array = ['1'=>'a','2'=>'a','3'=>'a','4'=>'b','5'=>'b']; 

foreach($first_array as $key=>$value) 
{ 
     //do your coding here, $key is the index of the array and $value is the value at that range, you can use that index and value to perform array manipulations 
} 

關於你的第二個問題,它不完全清楚試圖在那裏實施什麼。但是,你想要做什麼喜歡創建一個新的陣列與修改索引和其他東西可以在這個foreach()循環本身內完成

我希望這可以幫助你。