从数组中为每个字符串排序多维数组

时间:2014-05-06 09:45:00

标签: php arrays sorting multidimensional-array

我有一个像这样构建的多维数组:

array(
    array(
        'zahlungen_id' => 1,
        'reise_id' => 1,
        'name' => 'Liam Schnell',
        'schul_id' => 1,
        'summe' => 49,
        'art' => 'PayPal',
        'sicher' => 0,
        'datum' => '2014-05-05'
    ),
    array(
        'zahlungen_id' => 2,
        'reise_id' => 3,
        'name' => 'Max Göllner',
        'schul_id' => 1,
        'summe' => 49,
        'art' => 'SOFORT',
        'sicher' => 1,
        'datum' => '2014-05-06'
    ),
    array(
        'zahlungen_id' => 3,
        'reise_id' => 2,
        'name' => 'Sasha Novalja',
        'schul_id' => 2,
        'summe' => 49,
        'art' => 'Kreditkarte',
        'sicher' => 1,
        'datum' => '2014-05-05'
    ),
    array(
        'zahlungen_id' => 4,
        'reise_id' => 1,
        'name' => 'Hans Wurst',
        'schul_id' => 1,
        'summe' => 49,
        'art' => 'Sofort',
        'sicher' => 0,
        'datum' => '2014-05-04'
    )
);

我有什么方法可以使用' schul_id'对数组本身进行排序?就像一个下降的schul_id?

3 个答案:

答案 0 :(得分:1)

第一条评论是正确的!我用过这个

function aasort(&$array, $key) {
    $sorter = array();
    $ret = array();
    reset($array);
    foreach ($array as $ii => $va) {
        $sorter[$ii] = $va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va) {
        $ret[$ii] = $array[$ii];
    }
    $array = $ret;
}

答案 1 :(得分:1)

您正在寻找uasort

function cmp($a, $b) { if ($a["schul_id"] == $b["schul_id"]) { return 0; } return ($a["schul_id"] > $b["schul_id"]) ? -1 : 1; } uasort($array, 'cmp');

答案 2 :(得分:1)

array_multisort涵盖了这一点,这里是他们的文档调整到您的问题的示例:

foreach($data as $key => $row) {
    $schul_id[$key] = $row['schul_id'];
}

array_multisort($schul_id, SORT_DESC, $data);

print_r($data);