繁体   English   中英

如何在 php 代码中的 mysqli 数组中添加“排序依据”字段,然后按降序排序?

[英]How to add a “sort by” field to mysqli array in php code and then sort by it descending?

我有一个 mysql 查询的结果,我想添加一个新字段并填充一个我想排序的计算值,我是新添加字段到 arrays 和排序 ZA3CBC3F9D6C2F2C19CZE1 所以任何帮助不胜感激,谢谢。

$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
     }
}

我让它像这样工作:

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM