如何按一个特定值对数组中的项目排序

时间:2019-07-12 02:22:45

标签: php arrays sorting

我有一个包含项目的数组,每个项目都有几个值。 我需要按值“级别”对数组中的项目进行排序,然后我需要为每个项目回显一些代码。

数据库看起来像这样。

$database= [
[
'name'=> 'item_one',
'preview_href'=> 'item_one.php',
'img_src'=> 'pictures/item_one.jpg',
'level'=> 5.9,
'description'=> 'This product is.....' ,
],
[
'name'=> 'item_two',
'preview_href'=> 'item_two.php';
'img_src'=> 'pictures/item_two.jpg',
'level'=> 7.5,
'description'=> 'This product is.....' ,
  ],
 ];

我已经尝试过类似的方法,但是没有用。

function top_items($two)
{
  $two= arsort($two);

     foreach (array_slice($two, 0, 20) as $one)
    {
        echo '<div class="item">
        <a href="'. $one['preview_href'].'">
       <img src="' . $one['img_src'] .'">
       <p> '.$one['name'].' (' . $one['release']. ') </p>
          </a>
       </div>';
     }

   };

我的预期输出:我需要对前20个或具有最大['level']值的任意数量的项目使用此代码:

        echo '<div class="item">
        <a href="'. $one['preview_href'].'">
        <img src="' . $one['img_src'] .'">
        <p> '.$one['name'].' (' . $one['release']. ') </p>
       </a>
       </div>';

$ one是大数组数据库中的一个项目(数组)。在大型数据库中,我拥有所有项目。

1 个答案:

答案 0 :(得分:1)

您可以像这样使用值对子数组进行排序:

在<= PHP 5.6中:

usort($database, function ($a, $b) {
    return $a['level'] - $b['level'];
});

在> = PHP 7.0中:

usort($database, function ($a, $b) {
    return $a['level'] <=> $b['level'];
});

然后获得前20个项目(可以用x代替20):

$output = array_slice($database, 0, 20);