class test { var $var1 = "1"; var $var2 = "2"; var $var3 = "3"; }foreach(new test as $k=>$v) { echo "$k => $v<br>"; }
参见PHP手册范例: <?php class User { var $test; var $test2; }$user1 = new User(); $user2 = new User(); $user1->test = "user1's test"; $user1->test2 = "user1's test2"; $user2->test = "user2's test"; $user2->test2 = "user2's test2"; print_r($user1); print_r($user2); foreach($user1 as $key => $value) $user2->$key = $value; print_r($user1); print_r($user2); ?> Which outputs: User Object: user1 [test] => user1's test [test2] => user1's test2 User Object: user2 [test] => user2's test [test2] => user2's test2 User Object: user1 [test] => user1's test [test2] => user1's test2 User Object: user2 [test] => user1's test [test2] => user1's test2 This is particularly useful when you want to assign a different instance of the same class to $this- I have a standard method that I call when I need to do that: <?php function assignToThis($new) { foreach($new as $key => $value) $this->$key=$value; } ?>
php4 可以用 get_object_vars
class test { var $var1= "1"; var $var2= "2"; var $var3= "3"; }echo PHP_VERSION; foreach(new test as $k=>$v) { echo "$k => $v<br/>"; }输出: 4.3.2 var1 => 1 var2 => 2 var3 => 3谁说php4中foreach只用于数组?
var $var1 = "1";
var $var2 = "2";
var $var3 = "3";
}foreach(new test as $k=>$v) {
echo "$k => $v<br>";
}
<?php
class User {
var $test;
var $test2;
}$user1 = new User();
$user2 = new User();
$user1->test = "user1's test";
$user1->test2 = "user1's test2";
$user2->test = "user2's test";
$user2->test2 = "user2's test2";
print_r($user1); print_r($user2);
foreach($user1 as $key => $value)
$user2->$key = $value;
print_r($user1); print_r($user2);
?>
Which outputs:
User Object: user1
[test] => user1's test
[test2] => user1's test2
User Object: user2
[test] => user2's test
[test2] => user2's test2
User Object: user1
[test] => user1's test
[test2] => user1's test2
User Object: user2
[test] => user1's test
[test2] => user1's test2
This is particularly useful when you want to assign a different instance of the same class to $this- I have a standard method that I call when I need to do that:
<?php
function assignToThis($new) {
foreach($new as $key => $value)
$this->$key=$value;
}
?>
php4 可以用 get_object_vars
var $var1= "1";
var $var2= "2";
var $var3= "3";
}echo PHP_VERSION;
foreach(new test as $k=>$v) {
echo "$k => $v<br/>";
}输出:
4.3.2
var1 => 1
var2 => 2
var3 => 3谁说php4中foreach只用于数组?
PHP 4 引入了 foreach 结构,和 Perl 以及其他语言很像。这只是一种遍历数组简便方法。foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。
....
自PHP 5 起,还可能遍历对象。