2017-06-16 13 views
1

私は多次元連想配列が2つ以上の列を含んでいます。多次元連想配列の特定の順序

2つの特定の列の値で配列を並べ替える関数を作成しようとしています。たとえば、配列の位置4のvalue_column_3( 'hangs_from')が配列の位置0のvalue_column_1( 'old_id')に依存する場合、位置0の直後に配列の位置4を移動する必要があります。

バブルソートアルゴリズムの

この多次元連想配列から特定の位置にアクセスして比較する方法を教えてください。

+1

チェックuasort:https://www.w3schools.com/php/func_array_uasort.asp –

+0

しかし、どのように具体的に例えば第5、第6位を比較するのですか?たとえば、バブルソートを使用しようとしているとします: for(i = 2; i 配列(位置j)); ... something } } –

+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; 
} 
関連する問題