Как добавить поле «сортировать по» в массив MySQL в коде PHP, а затем сортировать по убыванию? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть результаты запроса MySQL, я хотел бы добавить новое поле и заполнить вычисляемым значением, которое я бы затем отсортировал, я новичок в добавлении полей в массивы и сортировке массивовтак что любая помощь приветствуется, спасибо.

$keyArray = explode(" ", $keyPhrase);
$result = $mysqli->query($queryString);
while($row = $result->fetch_array()){
    $rows[] = $row;
}            
foreach($rows as $row){
    $bodyData = $row["bodydata"];
    $totalKeys = 0;
    foreach($keyArray as $value){
        $keyCount = substr_count($bodyData, $value);
        $totalKeys = $totalKeys + $keyCount;
                }
        // Here I'd like to add new field to $rows[] 
        // with $totalKeys value then sort by it desc after the this loop
     }
}

1 Ответ

1 голос
/ 11 октября 2019

Я получил его на работу так:

foreach($rows as &$row){
        $bodyData = $row["bodydata"];
        $totalKeys = 0;
        foreach($keyArray as $value){
            $keyCount = substr_count($bodyData, $value);
            $totalKeys = $totalKeys + $keyCount;
        }                
        $row["sortcount"] = $totalKeys;                 
    }
    $rows = array_sort($rows, "sortcount", SORT_DESC);


function array_sort($array, $on, $order=SORT_ASC)
{
$new_array = array();
$sortable_array = array();

if (count($array) > 0) {
    foreach ($array as $k => $v) {
        if (is_array($v)) {
            foreach ($v as $k2 => $v2) {
                if ($k2 == $on) {
                    $sortable_array[$k] = $v2;
                }
            }
        } else {
            $sortable_array[$k] = $v;
        }
    }

    switch ($order) {
        case SORT_ASC:
            asort($sortable_array);
        break;
        case SORT_DESC:
            arsort($sortable_array);
        break;
    }

    foreach ($sortable_array as $k => $v) {
        $new_array[$k] = $array[$k];
    }
}

return $new_array;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...