Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中对数组结果进行排序以获得权重/相关性_Php_Arrays_Ajax_Sorting_Prestashop - Fatal编程技术网

如何在PHP中对数组结果进行排序以获得权重/相关性

如何在PHP中对数组结果进行排序以获得权重/相关性,php,arrays,ajax,sorting,prestashop,Php,Arrays,Ajax,Sorting,Prestashop,(顺便说一下,这是在Prestashop中使用的) 我有一个AJAX脚本,它生成一个数组,以便在给定输入的情况下,返回产品数据库的结果。这是一个自动搜索栏,所以当我输入时,不必执行搜索,它会自动这样做,并返回一个小的产品列表,问题是当我尝试按我喜欢的名称权重排序时,如果我搜索计算机,首先显示以“计算机”开头的结果,而不是显示产品名称中包含“计算机”的任何内容 我从这个列表中尝试了一些东西:但每次我这么做,AJAX都会停止工作,当我在搜索栏中键入内容时,不会出现任何结果 $result_produ

(顺便说一下,这是在Prestashop中使用的)

我有一个AJAX脚本,它生成一个数组,以便在给定输入的情况下,返回产品数据库的结果。这是一个自动搜索栏,所以当我输入时,不必执行搜索,它会自动这样做,并返回一个小的产品列表,问题是当我尝试按我喜欢的名称权重排序时,如果我搜索计算机,首先显示以“计算机”开头的结果,而不是显示产品名称中包含“计算机”的任何内容

我从这个列表中尝试了一些东西:但每次我这么做,AJAX都会停止工作,当我在搜索栏中键入内容时,不会出现任何结果

$result_products = array();
$products = array();
$bonsearch_key = Tools::getValue('search_key');
$context = Context::getContext();
$count = false;
$product_link = $context->link;

if (Tools::strlen($bonsearch_key) >= 3) {
    $products = Product::searchByName($context->language->id, $bonsearch_key);
    $total_products = count($products);
    if ($total_products) {
        for ($i = 0; $i < $total_products; $i++) {
            if (($products[$i]['name']) && ($products[$i]['active'])) {
                $images = Image::getImages($context->language->id, $products[$i]['id_product']);
                $product = new Product($products[$i]['id_product']);
                $products[$i]['link'] = $product_link->getProductLink($products[$i]['id_product'], $product->link_rewrite[1], $product->id_category_default, $product->ean13);
                $products[$i]['link_rewrite'] = $product->link_rewrite[1];
                $products[$i]['id_image'] = $images[0]['id_image'];
                $products[$i]['price'] = Tools::displayPrice(Tools::convertPrice($products[$i]['price_tax_incl'], $context->currency), $context->currency);
                if ($count < Configuration::get('BON_SEARCH_COUNT')) {
                    $result_products[] = $products[$i];
                    $count ++;
                } else {
                    break;
                }
            }
        }
    }

    $context->smarty->assign(array(
        'enable_image' => Configuration::get('BON_SEARCH_IMAGE'),
        'enable_price' => Configuration::get('BON_SEARCH_PRICE'),
        'enable_name' => Configuration::get('BON_SEARCH_NAME'),
        'search_alert'   => $bonsearch->no_product,
        'link' => $context->link,
        'products' => $result_products,
    ));

    $context->smarty->display(dirname(__FILE__).'/views/templates/hook/popupsearch.tpl');
} else {
    echo '<div class="wrap_item">'.$bonsearch->three_character.'</div>';
}
$result_products=array();
$products=array();
$bonsearch_key=Tools::getValue('search_key');
$context=context::getContext();
$count=false;
$product\U link=$context->link;
如果(工具::strlen($bonsearch_key)>=3){
$products=Product::searchByName($context->language->id,$bonsearch\u key);
$total_products=计数($products);
如果($total_产品){
对于($i=0;$i<$total_产品;$i++){
如果($products[$i]['name'])&($products[$i]['active'])){
$images=Image::getImages($context->language->id,$products[$i]['id_product']);
$product=新产品($products[$i]['id_product']);
$products[$i]['link']=$product\U link->getProductLink($products[$i]['id\U product'],$product->link\U rewrite[1],$product->id\U category\U default,$product->ean13);
$products[$i]['link_rewrite']=$product->link_rewrite[1];
$products[$i]['id_image']=$images[0]['id_image'];
$products[$i]['price']=Tools::displayPrice(Tools::convertPrice($products[$i]['price\U tax\U INC'],$context->currency),$context->currency);
if($countsmarty->assign(数组)(
'enable_image'=>Configuration::get('BON_SEARCH_image'),
'enable_price'=>Configuration::get('BON_SEARCH_price'),
'enable_name'=>Configuration::get('BON_SEARCH_name'),
“搜索提醒”=>$bonsearch->no\u产品,
“链接”=>$context->link,
“产品”=>$result\u产品,
));
$context->smarty->display(dirname(_文件)。'/views/templates/hook/popusearch.tpl');
}否则{
回显“.$bonsearch->三个字符”;
}

就个人而言,我发现排序最好由数据库完成,然后按照数据库给出的顺序打印出来。如果数据库足够智能,可以收集您想要的结果,那么它不应该以正确的顺序提供吗?因此,我将调整Product::searchByName中的代码,以根据需要返回输出。