0

基本上我正在尝试像这样对我的数组进行分组:

Shopping
   Amazon
Social
   Amoeblo
   American express

通过使用以下 PHP 代码:

<?php

echo '<ul id="list"><h2 class="searchresults"></h2>';
foreach($records as $catval) {
  $sitechar = $catval->site_category; 
  echo '<h3 id="disappear">'. strtoupper($sitechar) .'</h3>';       
  echo '<li class="siteli"><a href="#" class="add">'; 
  echo '<p id="text-site">'.$catval->site_name. '</p></a>';
  echo '</li>'; 
}
echo '</ul>';
?>

但我只得到如下值。

Shopping
       Amazon
Social
       Amoeblo
Social
       American express

我没有得到用于此的确切 PHP 排序。

4

3 回答 3

2

我将创建一个新数组,其中类别作为站点数组的键。

<?php
$arr = array();

// First create multidimensional array with categories as keys for site arrays
foreach($records as $catval) {
    $sitechar = $catval->site_category;
    if (!array_key_exists($sitechar, $arr)) {
        // Set new array for a category if it does not exist
        $arr[$sitechar] = array();
    }

    // Add site to category
    $arr[$sitechar][] = array(
        "name"=>$catval->site_name,
        "image"=>$catval->site_img
    );
}

// Then iterate the new array of categories
echo ("<ul>");
foreach($arr as $category => $sites) {
    echo("<h3>" . $site_category "</h3>");

    // Iterate array of sites
    foreach($sites as $site) {
        echo("<li>" . $site["name"] . "-" ,  $site["image"] . "</li>");
    }
}
echo("</ul>");
?>
于 2013-01-09T10:55:13.597 回答
1

您可以使用 foreach 和 ksort

让 $your_array 成为你上面提到的数组

$res_array    = array();
foreach($your_array as $val){
   $res_array[$val->site_category][] = $val->site_name;
}
ksort($res_array);

print_r($res_array);

或者在 php 中搜索 multisort 来解决你的问题:)

于 2013-01-09T10:53:18.587 回答
0
$tmp = null;

   echo '<ul id="list"><h2 class="searchresults"></h2>';
     foreach($records as $catval) {
       $myHtml = makeHtml($catval,$tmp);
       echo  $myHtml;
      $tmp = $catval->site_category;
     }
   echo '</ul>';


 function makeHtml($catval,$tmp){
       if($tmp != $catval->site_category){ $html .= '<h3 id="disappear">'. strtoupper($catval->site_category) .'</h3>';}
       $html .='<li class="siteli"><a href="#" class="add"><p id="text-site">'.$catval->site_name. '</p></a></li>'; 
       return $html;
 }
于 2013-01-09T11:12:44.870 回答