作者tails32100 (Tails)
看板PHP
标题Re: [请益] echo 资料的问题?
时间Sun Jun 9 23:47:37 2013
※ 引述《joinbee (二老林)》之铭言:
: echo "<td><a
: href='dispmessage.php?name=".$row_result["name"]."'>$row_result["name"]</a>
: </td>";
: 想请问一下上面这一行要怎麽写才对,我对"跟'要怎麽分开一直搞不太清楚,请
: 各位高手指教一下?对了,错误讯息是
: Parse error: syntax error, unexpected '"', expecting identifier (T_STRING) or
: variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\stock.php
: on line 41
小弟小小的讲一下个人心得
假设想处理变数和字串的话:
先不管单引号(')和双引号(")的效能差异
(效能有兴趣看这篇:
http://goo.gl/TjvxZ )
小弟个人习惯是HTML属性什麽的,都用双引号(")
JavaScript比较少写,不过也都是用双引号(")
PHP程式里,遇到字串通通都会用单引号('),变数会用串接(.)
所以程式码通常都会像这样: (just举例而已,假设输入的变数已处理过了)
e.g.:
$sql = 'SELECT ' . $column . ' FROM ' . $table;
$html = '<a href="' . $link . '"></a>';
$script = '
<script>
var str = "' . $php_var . '";
alert(str);
</script>
';
(程式码上色好累,後面懒得用了 = 3=)
当然最大的好处是不会跟HTML或是Javascript的双引号冲突
另外的好处就是变数直接串不用多想。
不用考虑什麽阵列,或是物件忘了加大括号的问题等。
e.g.:
$str = "{$arr['key']}";
$str = "{$obj->property}";
坏处显而易见,要多打很多有的没有的符号。
当然这单纯只是提供个人习惯做参考而已。
或者是说可以反过来操作:
PHP端全都用双引号,遇到变数全都加大括号,可能就很像Smarty那样吧
( Smarty:
http://www.smarty.net/ )
e.g.:
$str = "Today is {$date}.";
觉得这样做比较好的原因是:
有个统一化的做法,对於未来要看/改程式码是有帮助的。
以上的写法是建立在:如果要写一个纯粹只有PHP程式码的时候。 (MVC 的 M & C)
所以上面的程式码都没有PHP tag (<?php ?>)
那回到最开始,因为原po程式码有echo,所以应该是View
这样的话会小弟只会在有PHP变数的地方用echo即可
也就是echo里不会出现常数的字串
e.g.:
原始码:
<?php echo '<a href="' . $link . '"></a>'; ?>
小弟会改写成:
<a href="<?php echo $link; ?>"></a>
如此就可以完全避免PHP程式的单引号与双引号的内斗害Programmer斗鸡眼了XD
当然能避免的只有PHP的部分,HTML和JavaScript还是会有相同的问题啦
(如果PHP变数输出有误 当然还是要去debug PHP程式码的部分了)
以上建议仅供参考,如果有更好的写法可以一起来讨论 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.126.68.4
※ 编辑: tails32100 来自: 59.126.68.4 (06/09 23:48)
1F:推 kerash:我习惯用 "{$var} xxx" 的用法,而且测试後发现处理速度比 06/09 23:53
2F:→ kerash:较快,程式码也比较容易阅读。 06/09 23:53
3F:→ tails32100:耶!? 原本以为"{$var} xxx"的阵列key不能用双引号 06/10 00:01
4F:→ tails32100:结果刚刚去试了一下是可以的 = 3= 06/10 00:02
5F:→ tails32100:"{$arr["key"]}" 是可行的 06/10 00:03
6F:→ tails32100:所以结论是:小弟要改习惯了XDDD 06/10 00:04
7F:→ Bambe:我的习惯跟原po一样 @@ 06/10 12:54