示例:
<?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->为什么会产生出这样的结果?
<?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->为什么会产生出这样的结果?
在类里面 $this 当然指类本身
但是接着$cVars = array_keys($cVars);这样就不再是01了
$this->$cVars[$i] = func_get_arg($i);
//获取了参数值吧!
输出下
echo func_get_arg ( $i )."<br>";
试试。
赋值过去了而已!