加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如果与字符串相比,如何将数组元素移动到顶部?

发布时间:2020-12-13 13:07:19 所属栏目:PHP教程 来源:网络整理
导读:我有一个数组$result从 mysql获取如下 Array( [0] = Array ( [p_title] = Apple The New iPad (White,64GB,WiFi) ) [1] = Array ( [p_title] = Apple ipad Mini/ipad Mini Retina Belkin Fastfit Bluetooth Wireless Key ) [2] = Array ( [p_title] = Apple
我有一个数组$result从 mysql获取如下
Array
(
    [0] => Array
        (
            [p_title] => Apple The New iPad (White,64GB,WiFi)
        )
    [1] => Array
        (
            [p_title] => Apple ipad Mini/ipad Mini Retina Belkin Fastfit Bluetooth Wireless Key
        )
    [2] => Array
        (
            [p_title] => Apple ipad Air (16GB,WiFi + Cellular)
        )
)

并假设我在$sort_by变量中按值排序.
对于前目前,

$sort_by="Apple ipad";

所以我想将每个拥有p_title“Apple ipad”的数组元素移到顶部.

所以我的输出数组应该是;

Array
(
    [0] => Array
        (
            [p_title] => Apple ipad Air (16GB,WiFi + Cellular)
        )
    [1] => Array
        (
            [p_title] => Apple ipad Mini/ipad Mini Retina Belkin Fastfit Bluetooth Wireless Key
        )
    [2] => Array
        (
            [p_title] => Apple The New iPad (White,WiFi)
        )
)

我准备在mysql查询或php中编辑代码.

使用usort():
function sortx($a,$b) {
    if(strpos($a['p_title'],'Apple ipad')!==false){
        return -1;
    }
    return 1;
}

usort($array,'sortx');

只要前面的值包含该字符串,它就会被推向数组的开头.

如果要在usort()函数中使用变量,则需要使用对象:

class SortTitles{
    public $string;
    function sortx($a,$b) {
        if(strpos($a['p_title'],$this->string)!==false){
            return -1;
        }
        return 1;
    }
    public function sort_titles($array){
        usort($array,'self::sortx');
        return $array;
    }

}
$sort = new SortTitles;
$sort->string = 'Apple ipad';
$array = $sort->sort_titles($array);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读