1
yesmeck 2011-03-16 12:49:31 +08:00
这是一个提醒而不是一个错误。
因为你的循环出来的$a里面没有带c这个key的值。 $query = "select a ,b from a_table "; 这里只有a,b两个key可以用。 |
2
yesmeck 2011-03-16 12:52:35 +08:00
哦,还有这句
foreach ($lists as $e) { $e['c'] = 1; } 这样$lists里面并不会多1这个值, 要这样 foreach ($lists as $key => $e) { $lists[$key]['c'] = 1; } |
3
huacnlee 2011-03-16 13:59:50 +08:00
咋开始学PHP了啊
|
4
yaocaptain OP @yesmeck
恩,我试了一下你的方法,果然'c'这个索引插进去了。然后我改了一下: foreach ($lists as $key => $e) { //$lists[$key]['c'] = 1; $e['c']=1; } 结果却没有插进去。$e应该等于$lists[$key]的啊?然后我又测了一下$e==$lists[$key],它们是相等的。而且$lists并不是一个关联数组,应该用这个foreach($lists as $e)的语句提取元素吧。。。是不是语法在这里有特殊的地方,还是我有地方理解错了? |
5
benzhe 2011-03-16 16:01:38 +08:00
@yaocaptain $e 是$lists[$key] 的值
|
6
arikado 2011-03-16 16:28:57 +08:00
试试@@
foreach($lists as &$e){ $e['c']=1; } |
7
yesmeck 2011-03-16 16:31:51 +08:00
|
8
yesmeck 2011-03-16 16:35:21 +08:00
额,= =@arikado 我说错了
|
10
yaocaptain OP |
12
aligo 2011-03-16 16:51:35 +08:00
用array_map,通过FP方式来解决这个问题
$lists = array_map(function($e){ $e['c']=1; return $e; }, $lists); 无污染无副作用,不过用php来写这个实在太不美观了 还是应该造个php代码生成器 |
13
yaocaptain OP |
14
yaocaptain OP @aligo 哈哈有同感!$号敲得我烦死了!
|
15
arikado 2011-03-16 17:08:01 +08:00
@yaocaptain 你这段foreach后面是这样($c as $e)而不是($c as &$e) ? 没有漏掉"&" ?
|
16
aligo 2011-03-16 17:08:48 +08:00
虽然php的垃圾回收挺不靠谱的,不过php脚本的执行通常是随着http请求结束
所以尽可能不要用引用传递什么的比较好,对于变量每次变更,按照php默认做法,都指向一个新的引用比较好 不过php实在太不美观,缺乏表现力,从这个常用的array_map就可以看出-A- 不知道楼主有兴趣没:http://v2ex.appspot.com/t/9646 |
17
aligo 2011-03-16 17:12:58 +08:00
楼主需求应该可以写成
lists = lists.map(_['c']=1) 美观直接一目了然,可惜只是我的YY |
18
aligo 2011-03-16 17:16:01 +08:00
另外,连接在php中数据库应该用pdo比较好,fetchAll返回就是数组,不用手动遍历再push
|
19
yaocaptain OP @arikado
- - 不好意思看漏了...多谢提醒! |
20
yaocaptain OP |
21
yokle 2011-05-04 11:25:59 +08:00
干嘛不直接 fetch_array 出来就是数组。
|