streethacker 发表于 2013-07-15 19:32

一个有关php数组作为函数参数传递的问题

<?php
$name = array("Peter", "Jhon", "Smith");
function ChangeName(&$array){
    $array .= " hello";
    $array .= " hello";
    $array .= " hello";
}

ChangeName($name);

foreach($name as $value)
    print $value . "\n";
?>

我使用引用传参(传地址)的方式将数组name传递给ChangeName函数,然后通过通过
         $array .= " hello";
         $array .= " hello";
         $array .= “ hello”;
这三个语句将原数组name修改,成功输出修改后的结果:
         Peter hello
         Jhon hello
         Smith hello


但是当我将ChangeName函数的内容替换为:
function ChangeName(&$array){
    foreach($array as $value)
      $value .= " hello";
}

之后,就无法改变原数组,输出为:
       Peter
      Jhon
      Smith

或者替换为:
function ChangeName(&$array){
    for($i=0; $i<=2; $i++)
      $array .= " hello";
}
输出则成了:
      Peter
      Jhon
      Smith
      hello hello hello


我是php的初学者,这个地方不是很明白,请大家指教。

bikong0411 发表于 2013-07-16 08:53

第二个你这样写
function ChangeName(&$array){
    foreach($array as &$value)
      $value .= " hello";
}

第3个你少写了$

function ChangeName(&$array){
    for($i=0; $i<=2; $i++)
      $array[$i] .= " hello";
}

streethacker 发表于 2013-07-16 10:56

回复 2# bikong0411
多谢你的耐心解答,这下问题解决了。

   

bacy001 发表于 2013-08-01 11:49

不客气:):mrgreen:
页: [1]
查看完整版本: 一个有关php数组作为函数参数传递的问题