示例:
<?php
class foo {
private $a = '01', $b = '02', $c = '03';

function __construct() {

$nArgs = func_num_args();

$cVars = get_class_vars(__CLASS__);
echo var_dump($cVars) . '<br />'; $cVars = array_keys($cVars);

var_dump($cVars);
echo "<br />";


for ($i = 0; $i < $nArgs; ++$i) {
echo $i . ": " . $this->$cVars[$i] . "<br />";
$this->$cVars[$i] = func_get_arg($i);
echo $i . ": " . $this->$cVars[$i] . "<br />";
}


echo $this->a . ', ' . $this->b . ', ' . $this->c;
}
}

new foo('alpha', 12345, 'charlie');
?>输出:
array(3) { ["a"]=> string(2) "01" ["b"]=> string(2) "02" ["c"]=> string(2) "03" } 
array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } 
0: 01
0: alpha
1: 02
1: 12345
2: 03
2: charlie
alpha, 12345, charlie红色部分:为什么显示为如蓝色部分那样?不是应该为0: a的吗?究竟$this->$cVars[$i]中的$this->为什么会产生出这样的结果?

解决方案 »

  1.   

    $this在这里代表的是什么?不可能是foo类的对象吧?那么不用$this为什么不行?不都一样吗?
      

  2.   

    $this->$cVars[$i]  被解析为 $this->a 不就是 01 吗?
    在类里面 $this 当然指类本身
      

  3.   


    但是接着$cVars = array_keys($cVars);这样就不再是01了
      

  4.   

    注意下:
    $this->$cVars[$i] = func_get_arg($i);
    //获取了参数值吧!
    输出下
    echo func_get_arg ( $i )."<br>";
    试试。
    赋值过去了而已!