配列からhtml出力を作成したい
しかし、コードを完成させることができませんでした。コンプリートできる人はいますか?
または、このコードを書くためのより良いアイデアはありますか?
$schema = array(
0 => array(
'tag' => 'div',
'class' => 'lines',
0 => array(
'tag' => 'div',
0 => array(
'tag' => 'span',
'key' => 'Product Name'
),
'val' => 'Soap'
)
1 => array(
'tag' => 'div',
0 => array(
'tag' => 'span',
'key' => 'Product Name'
),
'val' => 'Ball'
)
)
);
function get_output($schema){
foreach($schema as $k => $v){
if(is_array($v)){
$v = get_output($v);
}else{
$info = '<$tag $att>$key</$tag>';
if($k == 'tag'){ $info = str_replace('$tag',$v,$info); }
if($k == 'class'){ $info = str_replace('$att','"'.$v.'" $att',$info); }
}
}
return $info;
}
echo get_output($schema);
期待される出力は
<div class="lines">
<div><span>Product Name</span>Soap</div>
<div><span>Pruduct Name</span>Ball</div>
</div><!-- #lines -->
更新 1
次の配列に対して同じ関数を作成することは可能ですか..
$schema = array(
'div' => array(
'class' => 'lines',
'div' => array(
'span' => array(
'key' => 'Product Name'
),
'val' => 'Soap'
),
'div' => array(
'span' => array(
'key' => 'Product Name'
),
'val' => 'Ball'
)
)
);
更新 2
それはどうですか?
$schema = array(
'div' => array(
'class' => 'lines',
'div' => array(
'span' => array(
'key' => 'Product Name'
),
'val' => 'Soap'
),
'layer' => array(
'span' => array(
'key' => 'Product Name'
),
'val' => 'Ball'
)
)
);