簡體   English   中英

基於Key的值將陣列拆分成更小的陣列?

[英]Split Array into Smaller Arrays Based on Value of Key?

我在我的網站上執行關鍵字搜索的mysql搜索結果。 他們按會員等級排序(0-3)。 但是,我需要以不同的方式顯示排名 - 比如排名3比其他排名更加突出。

我正在考慮將行拆分為單個數組。 因此,array0將包含排名為0的所有行等。然后循環遍歷這些數組以顯示結果。 我根本不知道如何做到這一點 - 將數組拆分成更小的數組。

(作為參考,我發現了這個問題: 根據鍵名稱將一個大數組拆分成較小的數組,但我不確定這是否是我需要的......也許對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 ) 

您可以使用rank作為鍵來創建一個多維數組,如下所示:

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

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

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

$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;
  }
}

然后輸出您想要格式化結束的每一行,echo closing </span> (或div或其他)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM