2016-04-05 45 views
0

假設我有按照他們的分數排序的男性列表以及按他們的分數排序的女性列表(從最高到最低)。 現在我想有一個清單:如何在不改變順序的情況下合併兩個排序的二維數組

Highest score male, Highest score female, 2nd score male, 2nd score female, 3rd score male, 3rd score female, etc... 

(需要注意的是,事件如果得分最高的女性比第二得分男性低,這都不重要。)

我怎麼能做到這一點用PHP?作爲請求

更新:

陣列稱爲:$arr_sort[$score][$gender]

輸入陣列1:

$arr_sort[20][male],$arr_sort[18][male],$arr_sort[17][male],$arr_sort[10][male],$arr_sort[9][male],$arr_sort[5][male],$arr_sort[1][male] 

輸入陣列2:

$arr_sort[15][female],$arr_sort[14][female],$arr_sort[13][female] 

預期的結果:

$arr_sort[20][male],$arr_sort[15][female],$arr_sort[18][male],$arr_sort[14][female],$arr_sort[17][male],$arr_sort[13][female],$arr_sort[10][male],$arr_sort[9][male],$arr_sort[5][male],$arr_sort[1][male]

不同尺寸無關緊要,只是混合,無論每一個的長度,(總之,我們需要得到一個結果,這樣,如果我們從結果中去除「男性」陣列,我們將得到原始的「女性」陣列,反之亦然。 )

+0

你的數組在哪裏?需要數組和預期的結果。如果一些條件列表。 –

+0

兩個輸入數組已經在預期的結果中,一個是$ gender = male,另一個是女性。 – user1314404

回答

0

輸入數組已經排序

如果你知道如何通過他們的一個迭代,你知道如何遍歷 通過其他陣列也是如此。迭代(交替)。

僞代碼:

Iterator m = new Iterator(array1); 
Iterator f = new Iterator(array2); 
List array3 = []; 

while (m.hasNext() || f.hasNext()) { 
    if (male.hasNext()) 
     array3.add(m.next()); 
    if (f.hasNext()) 
     array3.add(f.next()); 
} 

(編輯)的PHP例如:

$array3 = []; 
$mkeys = array_keys($array1); 
$fkeys = array_keys($array2); 
$nm = count($mkeys); 
$nf = count($fkeys); 

for ($i=0; ($i<$nm)||($i<$nf); ++$i) { 
    if ($i<$nm) { 
     //$array3[] = array($mkeys[$i], $array1[$mkeys[$i]]); 
     $array3[$mkeys[$i]] = $array1[$mkeys[$i]]; 
    } 
    if ($i<$nf) { 
     //$array3[] = array($fkeys[$i], $array2[$fkeys[$i]]); 
     $array3[$fkeys[$i]] = $array2[$fkeys[$i]]; 
    } 
} 

什麼PHP代碼是做走的是鍵和值,然後將它添加到一個關聯數組,而不管這個關鍵和價值是什麼。

由於陣列已經排序,所有需要發生是交替增加它們的元素到合併數組作爲每說明書中的問題

注意,事件[原文如此],如果最高得分陰低於2分男,不重要

+0

如果分數不是整數而是浮點數會發生什麼?你有沒有工作代碼,實際上,我真的不知道合併部分在哪裏? – user1314404

+0

@ user1314404 http://stackoverflow.com/q/4542234/5768168 – bgarcia

+0

@ user1314404 php代碼正在做什麼取得鍵和值,將其包裝在數組中,然後將其添加到位置索引數組中這個關鍵和價值是什麼。由於數組已經排序,所有需要發生的事情就是根據問題中的規範交替添加元素到合併數組中[請注意,如果事件的最高分低於男性的第二個分數,則不重要] – bgarcia

相關問題