100分求助一道关于PHP里用函数调用反映逗号和点号的问题?

<?php$arr=array(1=>'aaa',2=>'bbb',3=>'ccc');$brr=array(1=>'ddd',2=>'fff',3=>'eee');fu... <?php
$arr = array(1=>'aaa', 2=>'bbb', 3=>'ccc');
$brr = array(1=>'ddd', 2=>'fff', 3=>'eee');

function doFun($value) {
echo $value;
}

echo '<table width=100% border=1>';
foreach ($arr as $key => $value) {
echo '<tr>';
echo '<td>'. doFun($value). '</td>';
echo '<td>'. $brr[$key]. '</td>';
echo '</tr>';
}
echo '</table>';

echo '<hr color="red">';

echo '<table width=100% border=1>';
foreach ($arr as $key => $value) {
echo '<tr>';
echo '<td>', doFun($value). '</td>';
echo '<td>'. $brr[$key]. '</td>';
echo '</tr>';
}
echo '</table>';
回答请不要网上随便复制粘贴一段
注意代码里的两句echo '<td>'. doFun($value). '</td>';和echo '<td>', doFun($value). '</td>';
展开
 我来答
windblast
2012-05-24 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13624
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部
我来尝试解释下这个问题:

首先,解决下表格输出的问题,修改代码如下,则两种方式输出的表格都很完整:

function doFun($value) {
return $value; //echo $value;
}

其次,解释下原因:

1. 逗号运算符版本

<?php
echo '<td>', doFun($value). '</td>';
?>

这段代码最终的执行效果,可以用以下代码表示:

<?php
echo '<td>';
//doFun($value)
{
echo $value;
}
echo '';
?>

2. 点号运算符版本
<?php
echo "outside func ()\n" . doFun($value);
?>

这段代码最终的执行效果,可以用以下代码表示:

<?php
//doFun($value)
{
echo $value;
}
echo "outside func ()\n" . '';
?>

3. 第一个<td> </td>.没有被解析的原因:

不是没有解析,而是计算输出顺序的问题:

echo '<td>'. doFun($value). '</td>';

这句代码,首先执行的是 doFun() 函数,那么会直接输出 $value的值(echo $value),然后将
doFun()函数的返回值代入echo,由于 doFun()函数 没有返回值,所以输出为 '<td></td>',也就是说上面的代码,其执行的代码效果如下:

//doFun($value)
{
echo $value;
}
echo '<td>'. (返回值:空). '</td>';
?>

=========================================
在php中,逗号运算符一般推荐在 echo 时使用,据称其输出字符效率比用 . 要高,需要注意的一点是两者有点小区别。
追问
大哥,你的第三个要点里说道【由于 doFun()函数 没有返回值,所以输出为 ''】
但是最后我运行的时候,那张table表格第一列什么都没有完全空白,如果按你说的输出的话,不应该是空白啊!至少第一列里应该还有边框。
追答
有边框或是没有边框,这个跟浏览器对html代码的解析有关,有的浏览器(或是同个浏览器的不同版本),对于没有值的单元表格,显示的时候就是没有边框,这种情况,我以前遇到过。

你可以查看网页源代码,看有没有 这个代码,因为php输出的是html,所以不要光看显示效果,显示效果与具体的浏览器有关,我们现在关心的是php输出的结果,也就是网页的源代码。
匿名用户
2012-05-24
展开全部
逗号表示语句的顺序执行,先执行echo '<td>',然后再执行echo $value;
点号表示字符串的链接,echo '<td>'. doFun($value). '</td>';中由于doFun($value)函数没有返回值,所以结果为空,即最后的结果为:<td> </td>.
追问
回答的很好,把区别说出来了。但是,大哥,还是希望你能把我的代码运行一下。你会发现用点号连接起来的那个table表格输出的是    ------第一个 .没有被解析。第二个 .解析了
简言之你所说的最后一句是不正确的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式