2017-06-16 186 views
1

我有一個包含多於2列的多維關聯數組。多維關聯數組的特定順序

我正在嘗試創建一個函數,該函數使用兩個特定列的值對數組進行排序。例如,如果數組中的位置4的value_column_3('hangs_from')取決於數組中位置0的value_column_1('old_id'),則必須將位置4的位置4移動到位置0之後。

這是排序氣泡排序算法。

如何從此多維關聯數組訪問和指定位置,以便我可以進行比較?

+1

檢查uasort:https://www.w3schools.com/php/func_array_uasort.asp –

+0

但你如何比較具體地,例如第五和第六的位置?我的意思是,例如嘗試使用冒泡排序:對於(i = 2; i 數組(位置j)); ...東西 } } –

+0

其中密鑰1038陣列在最後所需的數組? –

回答

0

像這樣的東西應該工作。

$sortedArray = []; 
foreach($q1 as $key => $value){ 
    $tempData = []; 
    foreach($q1 as $key2 => $value2){ 
     if($value2['hangs_from'] === $key){ 
      $tempData[$value2['old_id']] = $value2; 
      unset($q1[$value2['old_id']]); 
     } 
    } 
    uasort($tempData, function($a, $b){ 
     return ($a['old_id'] < $b['old_id']) ? -1 : 1; 
    }); 
    $sortedArray[$key] = $value; 
    unset($q1[$value['old_id']]); 
    $sortedArray = $sortedArray + $tempData; 
}