基于Key的值将阵列拆分成更小的阵列?

时间:2011-06-17 06:54:36

标签: php mysql arrays

我在我的网站上执行了关键字搜索的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 ) 

3 个答案:

答案 0 :(得分:12)

您可以使用排名作为键来创建这样的多维数组:

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

答案 1 :(得分:3)

  

我有来自关键字搜索的mysql搜索结果

然后使用数据库/ SQL对其进行排序 - 而不是PHP。它更快,使用更少的代码。

答案 2 :(得分: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>(或div或其他)