基于密钥的值将数组拆分为更小的数组?
我有从我的网站上执行关键字搜索的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)
我有关键字搜索的mysql搜索结果
然后使用数据库/ SQL对它进行排序 - 而不是PHP。速度更快,代码更少。
并不总是。例如。在我的情况下,我需要合并两个表中的数据。 PHP似乎更容易使用 – Tebe 2015-07-17 07:41:39
假设,例如,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
你是绝对正确的 – Tebe 2015-07-17 23:42:17
$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>
(或股利或什么的),你想要的格式结束
纯数组拆分可以使用array_chunk(),但我猜你需要更多的重组比分裂。做一个循环并将结果保存到另一个阵列中,或许像Wesley van Opdorp所建议的那样。 – 2011-06-17 07:04:26
你不必将它们分开。它们按照会员级别排序,因此您只需运行一个foreach,并且如果当前排名与前一排名不同,则应用不同的格式。 – kapa 2011-06-17 07:06:00
@bazmegakapa,这就是我设置它的方式,但是一些格式是完全不同的。 – Sara 2011-06-17 07:18:05