【问题标题】:returning a record in array based on highest value with php?使用 php 根据最高值返回数组中的记录?
【发布时间】:2011-04-04 23:40:06
【问题描述】:

原始数据如下所示:banners/ad_1.png |横幅广告 1 | 1

这是一个使用 print_r 函数的数组:

Array ( [0] => banners/ad_1.png Banner ad 1 1 
        [1] => banners/ad_2.png Banner ad 2 2 
        [2] => banners/ad_3.png Banner ad 3 3 )

这是在用 | 爆炸之后分隔符,所以它由 img src、alt 文本、num 次查看分隔。

有没有一种方法可以按最多或最少查看的 num 次返回横幅信息?

我一直在玩 min、max、array_values、array_keys、array_multisort.. 我想不通。

谢谢!

【问题讨论】:

  • 你能解释一下原始数据是什么样子的吗?

标签: php


【解决方案1】:

这应该可以工作,前提是该数组不会变得太大以至于占用大量内存:

<?php

$array = array(
'banners/ad_1.png | Banner ad 1 | 1',
'banners/ad_2.png | Banner ad 2 | 2',
'banners/ad_3.png | Banner ad 3 | 3'
);

$sort = array();

foreach ($array as $row)
{
    $row = explode(" | ", $row); // split up string into a format we can deal with

    // use a unique index so we can keep track of association
    $idx = trim($row[0]); 
    $sort[$idx] = trim($row[2]);
}

arsort($sort); // sorts by value in descending order, keeps index association

print_r($sort);

/*
Should be:
Array(
    'banners/ad_3.png' => 3,
    'banners/ad_2.png' => 2,
    'banners/ad_1.png' => 1
)
*/

这是我使用的arsort 函数上的一些documentation

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多