PHPで多次元配列を<ul><li>に変換するクラス

※以前別の場所で書いた文章を備忘的に書き記しておきます。

【投稿年月日】2011-02-26 【ジャンル】PHP/MySQL

 「XBRL for PHP」の成果物の一つとして、PHPで多次元配列を<ul><li>に変換するクラスを公開します。

PHPで多次元配列を<ul><li>に変換するクラス

<?php
// arrayChangeUL.php

class arrayChangeUL {
 function beginning($array="", $encode="") {
  return "<ul>".$this->loopArray($array, $encode)."</ul>";
 }
 function loopArray($array="", $encode="") {
  foreach($array as $key=>$val) {
   $text .= "<li>".$this->h($key, $encode)."<ul>";
   $text .= (is_array($val)) ? $this->loopArray($val) : "<li>".$this->h($val, $encode)."</li>";
   $text .= "</ul></li>";
  }
  return $text;
 }
 function h($str="", $encode="UTF-8") {
  return htmlspecialchars($str, ENT_QUOTES, $encode);
 }
}
?>

サンプル

<?php
 $array = array(
  array("body"=>"apple", "value"=>array("key"=>"true", "volume"=>3)),
  array("body"=>"potato", "value"=>array("key"=>"false")),
  array("body"=>"cabbage", "value"=>array("key"=>"true", "volume"=>15)),
  array("body"=>"onion"),
  array("body"=>"orange", "value"=>array("key"=>"true", "volume"=>6))
 );
 require_once("arrayChangeUL.php");
 $obj = new arrayChangeUL;
 echo $obj->beginning($array);
?>

 「Simple Tree Menu」というJavaScriptと組み合わせて使うと、多次元配列を折りたたみ可能のツリーにすることができますよ。

Simple Tree Menu
www.dynamicdrive.com/dynamicindex1/navigate1.htm

EDIUNET | PHP/MySQL | 独り言 | 提供サービス | JavaScript