2011-04-04 45 views
0

原始数据如下所示:banners/ad_1.png |横幅广告1 | 1基于php的最高值返回数组中的记录?

下面是使用的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分隔,替代文字,查看的次数。

有没有一种方法可以通过查看次数,最大或最小返回横幅信息?

我一直在玩min,max,array_values,array_keys,array_multisort ..我弄不明白。

谢谢!

+0

你能澄清一下*原始数据的样子吗? – Shad 2011-04-04 23:56:06

回答

0

这应该工作,只要该阵列没有得到如此之大,它吃起来的内存显著大块:

<?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