Сортировка ассоциативного массива в PHP [дубликат]

Вы можете попробовать ниже - используя самостоятельное соединение

DEMO

update tablename t
join
(select b.id,b.groupname,count(b.id) as val from t1 a
join t1 b on a.groupname=b.groupname
and a.id<=b.id
group by b.id,b.groupname
)d on t.id=d.id
set value=val

ИЛИ

вы можете использовать [ 112] функция, если ваша версия mysql 8.0+

update tablename t
join
(
  select *, row_number() over(partition by groupname order by id) as rn from t1 
)d on t.id=d.id
set value=rn

61
задан John Carter 10 May 2010 в 17:15
поделиться

3 ответа

Использовать usort и предоставьте свою собственную функцию для упорядочения, например,

function cmp($a, $b)
{
    return $b['avgSearchVolume'] - $a['avgSearchVolume'];
}

usort($array, "cmp");
104
ответ дан 24 November 2019 в 17:10
поделиться

До PHP 5.3 это лучшая функция для сортировки по подразделам без создания новой функции для каждой клавиши.

function sortBySubkey(&$array, $subkey, $sortType = SORT_ASC) {
    foreach ($array as $subarray) {
        $keys[] = $subarray[$subkey];
    }
    array_multisort($keys, $sortType, $array);
}
sortBySubkey($arr, 'avgSearchVolume');

В PHP 5.3 вы можете сделать что-то вроде этого, такой же вызов функции, как и сейчас .

function getSortVariable($sortType = SORT_ASC) {
    switch($sortType) {
        case SORT_ASC:
            return function ($a, $b) use ($subkey) { return strcmp($a[$subkey], $b[$subkey]); };
    }
}

function sortBySubkey(&$array, $subkey, $sortType = SORT_ASC) {
    $sortFunction = getSortVariable($sortType);
    usort($array, $sortFunction($subkey));
}
18
ответ дан 24 November 2019 в 17:10
поделиться

Вам потребуется использовать пользовательскую функцию обратного вызова вместе с usort () .

function cmp($a, $b)
{
    if ($a['avgSearchVolume'] == $b['avgSearchVolume']) {
        return 0;
    }
    return ($a['avgSearchVolume'] > $b['avgSearchVolume']) ? -1 : 1;
}
usort($array, 'cmp');
8
ответ дан 24 November 2019 в 17:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: