2011-04-04 114 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