我有一些代碼用於從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時不行?
謝謝!
我會在這一個上採取更面向對象的方法。 –