2012-07-01 96 views
0

合併假設這已經是按升序排序的主數組:指數基於新陣列的創建,並與主陣列

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 

而且每個部分的具體要求進行排序的鍵(索引)另一個數組。

$keys = array(0, 2, 1, 5); 

所需的邏輯:應該創建一個數組說$output

  • $values元素開始誰的索引存儲$keys保存索引的順序。
  • $values的其餘元素應按升序排列在後面。

例如1

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 
$keys = array(0, 2, 1, 5); 
$output = array('value1', 'value3', 'value2', 'value6', 'value4', 'value5'); 

例如, 2

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 
$keys = array(5); 
$output = array('value6', 'value1', 'value2', 'value3', 'value4', 'value5'); 

例如, 3

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 
$keys is empty, no keys(indexes). 
$output = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 

我已經$values$keys陣列。我只需要弄清楚如何創建$output數組。我很肯定,$values陣列上需要有一個foreach循環才能工作。

我遇到一堵牆這裏試圖弄清楚這件事了...

回答

1

嘗試......

基本上解析$values陣列和拉動相關的值了。 取消設置數組,因爲我們只留下未排序的值。 數組中的其餘項目將在循環後合併。與array_merge。

取消設置數組不會改變索引值,這在這種情況下很有用。

雖然有更多的$keys$values會有錯誤。需要添加一些錯誤檢查。

$values = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6'); 
$keys = array(0, 2, 1, 5); 

foreach ($keys AS $key) { 
    $tempOutput[] = ($values[$key])?$values[$key]:''; 
    unset($values[$key]); 
} 

$output = array_merge($tempOutput, $values); 
+0

好吧,太棒了,那就是訣竅!非常感謝:) –

+0

不用擔心,很高興有幫助! – cstrat