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でマルチソートを検索してください:)

于 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 に答える