2011-06-17 76 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>(或股利或什么的),你想要的格式结束

相关问题