我有一些代码用于从PHP构建HTML表。缺少PHP数组孙子
<?php
function new_table($class)
{
$table = array('class' => $class, 'tr' => array());
return $table;
}
function new_tr(&$table, $class)
{
$tr = array('class' => $class, 'td' => array());
$table['tr'][] = $tr;
return $tr;
}
function new_td(&$tr, $class, $content)
{
$td = array('class' => $class, 'content' => $content);
$tr['td'][] = $td;
return $td;
}
?>
用法:
$table = new_table('admin whoami');
$tr = new_tr($table, 'head');
new_td($tr, 'field', 'Field');
new_td($tr, 'value', 'Value');
$tr = new_tr($table, 'body');
new_td($tr, 'field', 'Name');
new_td($tr, 'value', $my_name);
echo '--- tr ---'.chr(10);
var_dump($tr);
echo '--- table ---'.chr(10);
var_dump($table);
而结果:
--- tr ---
array(2) {
["class"]=>
string(4) "body"
["td"]=>
array(2) {
[0]=>
array(2) {
["class"]=>
string(5) "field"
["content"]=>
string(4) "Name"
}
[1]=>
array(2) {
["class"]=>
string(5) "value"
["content"]=>
string(5) "user0"
}
}
}
--- table ---
array(2) {
["class"]=>
string(12) "admin whoami"
["tr"]=>
array(2) {
[0]=>
array(2) {
["class"]=>
string(4) "head"
["td"]=>
array(0) {
}
}
[1]=>
array(2) {
["class"]=>
string(4) "body"
["td"]=>
array(0) {
}
}
}
}
如果你注意,后续代码var_dump($ TR)正确转储TR,包括儿童td元素。
然而,后续代码var_dump($表),而正确地var_dumping的TR的元件,并不的var_dump孙子td元素 - 注意空数组[ “TD”] =>数组(0){}
待办事项你知道为什么会发生这种情况吗?
它是否与返回的$ tr元素是$ table ['tr']元素的副本而不是引用有关?在这种情况下,为什么添加tr到表中工作,向tr添加td时不行?
谢谢!
我会在这一个上采取更面向对象的方法。 –