2011-06-17 50 views
2

我有從我的網站上執行關鍵字搜索的mysql搜索結果。他們按照會員級別排序(0-3)。但是,我需要以不同的方式展示排名 - 就像排名第3的排名比其他排名更加突出。基於密鑰的值將數組拆分爲更小的數組?

我正在考慮將行分成單獨的數組。所以就像array0將包含所有排名爲0的行等。然後通過這些數組循環顯示結果。我只是不知道如何做到這一點 - 將陣列拆分成更小的陣列。

(僅供參考,我發現這樣一個問題:splitting a large array into smaller arrays based on the key names,但我真的不知道,如果這就是我需要的東西......也許一些澄清是q將有助於在這裏?)

例如這裏是我的數組:

Array ( 
    [rank]   => 3 
    [organization] => Test Company 
    [imagecompany] => 1636.gif 
    [website]  => http://www.google.com 
    [phone]  => 344-433-3424 
    [fax]   => 
    [address_on_web] => physical 
    [address] => 2342 Test Ave 
    [city] => York 
    [stateprov] => WA 
    [postalcode] => 00000 
    [address_mailing] => 2342 Test Ave 
    [city_mailing] => Seattle 
    [state_mailing] => WA 
    [zip_mailing] => 00000 
    [description] => 'Test test Test test Test test Test test Test 

test Test test Test test Test test Test test Test test Test test Test test Test test 

Test test Test test' 
    [customerid] => 1636) 
+0

純數組拆分可以使用array_chunk(),但我猜你需要更多的重組比分裂。做一個循環並將結果保存到另一個陣列中,或許像Wesley van Opdorp所建議的那樣。 – 2011-06-17 07:04:26

+0

你不必將它們分開。它們按照會員級別排序,因此您只需運行一個foreach,並且如果當前排名與前一排名不同,則應用不同的格式。 – kapa 2011-06-17 07:06:00

+0

@bazmegakapa,這就是我設置它的方式,但是一些格式是完全不同的。 – Sara 2011-06-17 07:18:05

回答

11

可以使用等級爲一鍵創建多維數組是這樣的:

$aRanks = array(); 
foreach($aArray as $aEntry) { 
    $aRanks[$aEntry['rank']][] = $aEntry; 
} 
echo '<pre>'; 
print_r($aRanks); 
+0

感謝您的幫助! – Sara 2011-06-17 21:46:13

+0

非常聰明謝謝 – themis 2017-05-08 13:39:41

3

我有關鍵字搜索的mysql搜索結果

然後使用數據庫/ SQL對它進行排序 - 而不是PHP。速度更快,代碼更少。

+0

並不總是。例如。在我的情況下,我需要合併兩個表中的數據。 PHP似乎更容易使用 – Tebe 2015-07-17 07:41:39

+1

假設,例如,OP想要通過RANK命令將頂部的3個值排序,那麼在SQL中,這意味着添加'ORDER BY IF(rank = 3,-1,rank)'。約27個字符,2條指令。或者,也許它是一個簡單的降序數字排序,'3'作爲最高值:'ORDER BY rank DESC'(19個字符,帶修飾符的一條指令)。如果你可以用更少的代碼和/或更少的指令在PHP中實現這個功能,我會非常感動。 – symcbean 2015-07-17 22:02:54

+0

你是絕對正確的 – Tebe 2015-07-17 23:42:17

0
$query = mysql_query(); // your query here 
$result = mysql_fetch_array($query); 
foreach($result as $row){ 
    switch($row['rank']){ 
    case 3: 
    // statement to apply formatting, add to each case 
    // example: 
    echo "<span style="color:red;">; 
    break; 
    case 2: break; 
    case 1: break; 
    } 
} 

然後輸出的每一行,回聲關閉</span>(或股利或什麼的),你想要的格式結束