• 解決済 mmm007

    (@mmm007)


    レベルの低い質問で大変恐縮なのですが、
    みなさまのお知恵を拝借したく、質問させていただきます。

    車の車種をカテゴリーで分けているのですが、
    category.phpにて50音順に子カテゴリーを並べたいです。
    車種カテゴリーの「説明」に「ア行」等を入力して以下のように振り分けたいと考えています。

    ▽ア行
    -アトレー
    -ウェイク
    ▽マ行
    -ミライース
    -ムーヴ

    フォーラムを参考にやってみました。
    https://ja.forums.wordpress.org/topic/7759?replies=3

    <?php
    	$cat_info = get_category( $cat );
    	$parent = $cat_info->term_id;
    	$args = array(
    		'parent'  => $parent ,
    		'hide_empty' => 0
    	);
    
    	$categories = get_categories( $args );
    	$yomis = array( 'ア行', 'カ行', 'サ行' , 'タ行', 'ナ行' ,'ハ行' ,'マ行','ヤ行','ラ行' ,'ワ行' );
    	$divided = array();
    	foreach( $categories as $aiueo ) :
    		$divided[$aiueo->description] = $aiueo ;
    	endforeach;
    
    	foreach ( $yomis as $yomi ) :
    		if ( isset( $divided[$yomi] ) ) :
    			echo '<h3>' .$yomi  .'</h3>';
    			foreach ( $divided[$yomi] as $aiueo ) :
    					echo  $aiueo->name;
    			endforeach;
    		endif;
    	endforeach;
    ?>

    結果、最後の項目しか表示されず以下のようになってしまい、「アトレー」「ミライース」は消えてしまいます。

    ▽ア行
    -ウェイク
    ▽マ行
    -ムーヴ

    また、ひとつしか返ってきてないから?配列じゃないから?か、
    最後のforeach ( $divided[$yomi] as $aiueo ) : echo $aiueo->name; 部分でエラー(non-object)が出てしまいます。

    恐れ入りますが、どうぞよろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 最初の foreach で

    $divided[$aiueo->description] = $aiueo ;

    のようにセットするので、$divived がふつうの配列になります。そのため

    また、ひとつしか返ってきてないから?配列じゃないから?か、

    という結果になっていますから、最初の foreach で $divided(配列)の要素ひとつひとつがさらに配列(要素がカテゴリーオブジェクト)となるように値をセットしましょう。

    トピック投稿者 mmm007

    (@mmm007)

    gblsm様
    コメントありがとうございます。

    array_push等で多次元配列にするということで認識あってますでしょうか。
    試行錯誤しているのですが、上手くいかずもう少しヒント頂戴できると助かります。

    お願いばかりで申し訳ありません。
    よろしくお願いします。

    foreach ( $divided[$yomi] as $aiueo ) : は $divided[$yomi] がカテゴリーオブジェクトの「配列」であることを期待しているんですよね。
    すると、その前の if ( isset( $divided[$yomi] ) ) : は「配列が空でない」ことを確かめた方がよいと思います。
    そして $divided[$aiueo->description] = $aiueo ; は、ご認識のとおり array_push() で配列へカテゴリーオブジェクトを加えることになりますが、以下の書き方の方が簡単です。

    $divided[$aiueo->description][] = $aiueo;

    トピック投稿者 mmm007

    (@mmm007)

    gblsm様
    ご丁寧にご説明いただきましてありがとうございました。
    おかげさまで理解でき、思った表示ができるようになりました。
    本当にありがとうございました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カテゴリー説明で50音順に並べたい」には新たに返信することはできません。