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);
}
}
?>
// 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);
?>
$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