2017-06-16 116 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; 
}