90%的php程序员都会答错的问题 第二题:<?$a=array(2,4,5);foreach($a as $b ) { $c+=$b; unset($a);}echo $c;不要测试,告诉我$c的值。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 还有点不懂.. unset($a)的用法有点不懂..不用它好象也是一样的奥.. 其实这两个题考的是foreach($a as $b)时,$b到底做为数组的key还是做为数组value.当foreach($a as $b),$b是做为value的,如果foreach($a as $b => $c),这时$b就做为key了. 回答第一题是4的朋友肯定是把$b做为数组的key了. 这题目这不算 90% PHP程序员会错,没有一点 转弯的地方 顶顶,猜4的朋友可能认为,是2+2; 数组让unset了,其实foreach是拷贝的 不会了!PHP程序员没有你想的那么菜了!问题是在foreach($a as $b ),这句要是明白的话是太简单不过了!呵呵!你要说要弄明白整个赋值流程,如何建立空间,才有点难度,答案就是!1 : 10 2 : 11 ShadowSniper(牛头人酋长(等级10)) ( ) 信誉:96 Blog 2007-2-5 19:22:42 得分: 0 其实这两个题考的是foreach($a as $b)时,$b到底做为数组的key还是做为数组value.当foreach($a as $b),$b是做为value的,如果foreach($a as $b => $c),这时$b就做为key了. ------------错。 只是奇怪为什么unset($a);没起作用 第一题为什么等于10。大家想不到的地方在foreach循环的时候 $b赋值问题, 其实就是每次循环的时候$b重新赋值!!!!而不是累加!!! 最后位是5,5+5=10很容易让人产生职业幻觉,,。。 4+4 再+5 有朋友困惑unset($a);没起作用,其实也简单,因为php操作变量的时候是拷贝而不是引用。 haha 深奥啊 搞不明白 所以我每次都用for循环 有朋友困惑unset($a);没起作用,其实也简单,因为php操作变量的时候是拷贝而不是引用。=============明白了$a=array(2,4,5);foreach($a as $b ) { $b+=$b; unset($a);}var_dump($a);结果为null 这里似乎存在歧义$a明明已经被unset了在循环里却还能使用,是否可以理解为php的bug $a明明已经被unset了在循环里却还能使用因为php操作变量的时候是拷贝而不是引用。 第一题错了,第一题对了所以我一般用list($k,$v)=each(); PHP 4(不是 PHP 3)包括了 foreach 结构,和 Perl 以及其他语言很像。这只是一种遍历数组简便方法。foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。 foreach(array_expression as $value) statementforeach(array_expression as $key => $value) statement 第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。 第二种格式做同样的事,只除了当前单元的键值也会在每次循环中被赋给变量 $key。 注: 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。 注: 此外注意 foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此即使有 each() 的构造,原数组指针也没有变,数组单元的值也不受影响。 注: foreach 不支持用“@”来禁止错误信息的能力。 1b=2+2=4b=4+4=8b=5+5=10结果102c=0+2=2c=2+4=6c=6+5=11结果11 第三题<?$a=array(2,4,5);foreach($a as $b ) {$a=&$b;$a++;unset($a);}echo $b;不要测试,告诉我$b的值。嘿嘿 注: 除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。 想引入一个网页到自己网站,不能iframe,怎么破? 请问怎么在php中设置系统代理? js获取php页面中标签id的问题..急!急!! Perl-DB数据库组件 file_put_contents函数写入数据的问题 PHP项目里的HTML页代码求教 怎么样写这个url 怎样把前一页的select中选得的值传到下一页的select中? MSSQL7.0数据读取问题 php如何获取网页并替换文字或者链接 如何让googlesearch的查询结果包含在自己的网页里? 有没有代替session功能的东西
当foreach($a as $b),$b是做为value的,如果foreach($a as $b => $c),这时$b就做为key了.
答案就是!1 : 10
2 : 11
其实这两个题考的是foreach($a as $b)时,$b到底做为数组的key还是做为数组value.
当foreach($a as $b),$b是做为value的,如果foreach($a as $b => $c),这时$b就做为key了.
------------
错。
大家想不到的地方在foreach循环的时候 $b赋值问题, 其实就是每次循环的时候$b重新赋值!!!!而不是累加!!! 最后位是5,5+5=10
很容易让人产生职业幻觉,,。。 4+4 再+5
=============
明白了$a=array(2,4,5);
foreach($a as $b ) {
$b+=$b;
unset($a);
}
var_dump($a);结果为null 这里似乎存在歧义$a明明已经被unset了在循环里却还能使用,是否可以理解为php的bug
所以我一般用list($k,$v)=each();
foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement
第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。 第二种格式做同样的事,只除了当前单元的键值也会在每次循环中被赋给变量 $key。
注: 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。 注: 此外注意 foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此即使有 each() 的构造,原数组指针也没有变,数组单元的值也不受影响。
注: foreach 不支持用“@”来禁止错误信息的能力。
b=2+2=4
b=4+4=8
b=5+5=10
结果10
2
c=0+2=2
c=2+4=6
c=6+5=11
结果11
$a=array(2,4,5);
foreach($a as $b ) {
$a=&$b;
$a++;
unset($a);
}
echo $b;不要测试,告诉我$b的值。
嘿嘿