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>'; 展开
$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>'; 展开
2012-05-24 · 知道合伙人软件行家
关注
展开全部
我来尝试解释下这个问题:
首先,解决下表格输出的问题,修改代码如下,则两种方式输出的表格都很完整:
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 时使用,据称其输出字符效率比用 . 要高,需要注意的一点是两者有点小区别。
首先,解决下表格输出的问题,修改代码如下,则两种方式输出的表格都很完整:
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>.
点号表示字符串的链接,echo '<td>'. doFun($value). '</td>';中由于doFun($value)函数没有返回值,所以结果为空,即最后的结果为:<td> </td>.
追问
回答的很好,把区别说出来了。但是,大哥,还是希望你能把我的代码运行一下。你会发现用点号连接起来的那个table表格输出的是 ------第一个 .没有被解析。第二个 .解析了
简言之你所说的最后一句是不正确的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询