php – echo语句中的逗号表示什么?
我试图从递归函数回显一个字符串:
echo“< li>”,$node,recurse($arr),“< / li>”; 和 echo“< li>” . $node.递归($arr). “< /锂>” 中; function writeList($tree) { if($tree == null) return; echo "<ul>"; foreach($tree as $node=>$children) { echo "<li>",writeList($children),"</li>"; } echo "</ul>"; } $tree是一个树状结构,可以在this question(form2)中找到 而且,我可以注意到两者的输出是不同的. 编辑:如果不是回显字符串,我想将此函数生成的字符串存储在变量中.我特别感兴趣的是从第一个echo语句收到的输出. 编辑: array 3 => array 4 => array 7 => null 8 => array 9 => null 5 => null 6 => null 我得到的输出是: <ul><li>3<ul><li>4<ul><li>7</li><li>8<ul><li>9</li></ul></li></ul></li><li>5</li></ul></li><li>6</li></ul> (来自第二个回声声明) <ul><ul><ul><li>7</li><ul><li>9</li></ul><li>8</li></ul><li>4</li><li>5</li></ul><li>3</li><li>6</li></ul> 解决方法
编辑:好的,我明白了.罪魁祸首是你的writeList()函数.该函数内部存在二次回声.
当你这样做: echo "<li>",writeList($arr),"</li>"; 首先评估每个部件然后打印出来.它相当于: echo "<li>"; echo $node; echo writeList($arr); echo "</li>"; 但是当你这样做时: echo "<li>" . $node . writeList($arr) . "</li>"; 整个字符串使用连接运算符构造.首先,然后打印出来.这意味着在构造字符串期间首先调用writeList($arr),然后调用外部echo. 要避免此问题,请不要在函数调用中回显任何内容.使用连接运算符构建字符串,然后返回它们,以便外部回显可以打印它们.
使用输出缓冲. ob_start(); echo "<li>","</li>"; $out = ob_get_clean(); 但对于那个特定的陈述,为什么不直接连接呢? $out = "<li>" . $node . writeList($arr) . "</li>"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |