foreach 通过在 $value 之前加上 & 很容易就能修改数组的单元,如:
PHP代码
- foreach($arr as &$value){
- $value .= '4';
- }
但这个用法也很容易造成错误,而且也不容易找。
看例子更直截了当:
PHP代码
- <?php
- $arr = array('a','b','c');
- $arr2 = array('d', 'e', 'f');
-
- foreach($arr as &$value){
- $value .= '4';
- }
-
-
- foreach($arr2 as $value){
-
- }
-
- foreach($arr as $value){
- echo $value, "\n";
- }
- ?>
大家看看输出的结果是否和期望的一...
举个例子说明下
JavaScript代码
- <script type="text/javascript">
- var pic = thumb = new Array();
- for(var i=0; i<2; i++){
- pic[pic.length] = i;
- thumb[thumb.length] = i;
- }
- </script>
这样赋值后原以为 pic和thumb的值都是 [0, 1]。其实不然,它们两个的值都是[0, 0, 1, 1].
原因是这种复制方式引起的 var pic = thumb = new Array(); js数组是引用传递的。
但如果是字符串,这样:var pic = thumb = ''; 又不会有这个问题。
数组改成这种方式就没有问题了
var pic = new Array(), thumb = new Array();
Perl子程序参数是数组或哈希表时,函数中获得这些参数值的方式和一般的标量变量是不同的。
Perl代码
- #!/usr/bin/perl
- use strict;
- use warnings;
-
- sub func{
- print "@_\n";
- }
-
- my $id = 1;
- my @info = ('PHPfans', 'phpfans.net');
- my %info = ("name"=>"PHPfans", "url"=>"phpfans.net");
-
- func($id, @info);
[root@PHPfans perl]# perl sub.pl
1 PHPfans phpfans.net
发现第一个参数和第二个参数合并成一个大数组了。如果是哈希表的话还会将键值也保存在 @_ 数组中。问题是怎么将各个参数分出来。这里第一个是标量变量,还可以用 shift 获取,然后剩下的就是第二个参数。但如果两个都是数组变量的话,这种方法显然就...