在 php 中,数组可以存储不同类型的数据,包括字符串、数字、布尔和对象等。而数组中存储的对象是一个非常有趣的问题,因为如果我们把一个对象存储在一个数组中,我们可以很容易地使用数组来管理和操作这些对象的集合。但是,对象在内存中是有状态的,而数组则是没有状态的,这样就需要我们考虑如何在数组中存储对象,以及如何正确地使用它们。
首先,可以将对象存储在一个数组中,这里的对象是指类的实例化对象,也就是通过 new 关键字来创建的对象。例如,定义一个 Person 类,然后创建两个对象:
class Person {
public $name;
public $age;
}
$p1 = new Person();
$p1->name = 'Tom';
$p1->age = 20;
$p2 = new Person();
$p2->name = 'John';
$p2->age = 30;
$persons = [$p1, $p2];通过将 $p1 和 $p2 对象存储在数组 $persons 中,我们可以很容易地通过 foreach 循环来遍历数组中的每个对象,像这样:
foreach ($persons as $p) {
echo $p->name . ' is ' . $p->age . ' years old.';
}同样的方法,我们可以使用 for 循环、while 循环等等遍历数组中的对象。
然而,需要注意的是,在数组中存储对象有一些细微的区别。在 PHP 5 中,数组中的对象是按引用传递的,这意味着如果我们改变了数组中某个对象的属性,原始对象也会被修改。例如:
立即学习“PHP免费学习笔记(深入)”;
$p = new Person(); $p->name = 'Tom'; $p->age = 20; $persons = [$p]; $persons[0]->name = 'John'; echo $p->name; // 输出 John
这里 $persons 数组中存储的对象 $p,在修改了 $persons 数组中的 $p 对象属性后,原始的 $p 对象也被修改了。
在 PHP 7 中,数组中的对象是按值传递的,这与 PHP 5 有所不同。这意味着在修改数组中的对象属性时,原始对象不会被修改。例如:
$p = new Person(); $p->name = 'Tom'; $p->age = 20; $persons = [$p]; $persons[0]->name = 'John'; echo $p->name; // 输出 Tom
这里 $persons 数组中存储的对象 $p,在修改了 $persons 数组中的 $p 对象属性后,原始的 $p 对象没有被修改。
因此,在使用数组存储对象时,我们需要清楚地知道对象是按值传递还是按引用传递的。如果是按引用传递,我们需要注意在修改数组中的对象时,原始对象可能会被修改。如果是按值传递,我们可以根据自己的需要来修改存储在数组中的对象,而不会对原始对象造成影响。
总之,我们可以使用数组来存储对象,这样可以方便地管理和操作对象的集合。需要注意的是,存储在数组中的对象是按值传递还是按引用传递的,我们需要考虑这一点来正确地使用数组中的对象。
以上就是php数组放对象吗的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号