duanlian1960 2012-05-05 11:01
浏览 87
已采纳

PHP中的指针问题[重复]

Possible Duplicate:
Strange behavior Of foreach
Strange behaviour after loop by reference - Is this a PHP bug?

Can anybody explain me why this code:

<pre>
<?php

$a = array('page', 'email', 'comment');
$b = array('page' => 'realpage', 'email' => 'reaLmail', 'comment' => 'c');
$c = array();

foreach ($a as &$item) {
        if (isset($b[$item])) {
               $item =  $b[$item];
        }
}


foreach ($a as $item) {
        $c[] = $item;
}

print_r($c);

Outputs

 Array
(
    [0] => realpage
    [1] => reaLmail
    [2] => reaLmail
)

??? Why BEFORE second loop a is (by var_dump)

array(3) {
  [0]=>
  string(8) "realpage"
  [1]=>
  string(8) "reaLmail"
  [2]=>
  &string(1) "c"
}

But in first iteration, a is

 array(3) {
  [0]=>
  string(8) "realpage"
  [1]=>
  string(8) "reaLmail"
  [2]=>
  &string(8) "realpage"
}

and on second and third [1] and [2] indexes are the same "reaLmail", and [2] is pointer? Thank you!

  • 写回答

2条回答 默认 最新

  • dpa84373 2012-05-05 11:08
    关注

    if you use foreach (... as &..), then unset is required as describe in the php manual:

    foreach ($a as &$item) {
            if (isset($b[$item])) {
                   $item =  $b[$item];
            }
    }
    unset($item);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么