猿问

如何在 PHP 中向对象添加新的键值对?

我想我的问题有两个方面

在 Python 中,如果我这样做

x = {key: value}

我创建了一个字典

在 javaScript 中,如果我做同样的事情,我已经创建了一个对象

PHP中的那个是什么?可能只是我不知道条款

我正在用 laravel 做一个项目。我基本上有一个我正在访问的sqlite数据库。这将返回一个“对象”数组(在 JavaScript 术语中)。我想通过数组中的“对象”执行 foreach 循环,并且我想向“对象”添加一个新的键和值。

其次 - 抱歉,我不是 100% 确定 php 中的语法:

$person = [0 => {name: "Jake", age: 22},
           1 => {name: "Chris", age: 34}];

我再次对语法感到非常抱歉,我直接从 sqlite 数据库接收数组,所以在这个阶段它不是太重要。

我的问题是 - 如果我想为每个人添加一个身高,我该怎么做?让我改写一下,我知道使用 foreach 循环遍历数组,我只需要一个命令,该命令将允许我将新的键/值对附加到字典/对象/它们在 PHP 中调用的末尾。结果将是:

$person = [0 => {name: "Jake", age: 22, height: "2m"},
          1 => {name: "Chris", age: 34, height: "3m"}];

我知道这是一个非常简单的问题,但我正在努力寻找合适的问题来问谷歌。如果我问错了问题,请赐教我我一直在挠头太久了,我可以用另一种语言轻松做到这一点。我真的很感谢你的帮助。


沧海一幻觉
浏览 992回答 3
3回答

慕妹3242003

这将在对象数组的末尾追加新对象$objectArray[] = $newObject;如果要向对象添加新属性,只需执行以下操作:$object->newPropery = 'value';

Cats萌萌

你在这里有两个选择。第一个只是一个array. PHP 中的数组是关联的,因此它们可以使用字符串作为键,而不仅仅是数字。你会做这样的事情:$people = [ [  'name' => 'Jane Smith',  'age' => 20, ], [  'name' => 'Mary Sue',  'age' => 30 ]]要添加一些像这样的数组,你可以只定义一个新的关键:$people[0]['height'] = 2;。如果您愿意,您还可以使用for循环(或foreach带引用的)根据某些公式将其添加到每个人。然而,这有点不合时宜,因为数组构成了糟糕的数据结构:没有关于可以在其中包含哪些数据、可以使用该数据做什么等的预定义信息。相反,您通常需要声明一个类,至少像这样:class Person{    public $name;    public $age;    public $height;}然后,你可以创建$person = new Person();和设置使用箭头语法的值:$person->name = 'Jane Smith';。理想情况下,您还希望构造函数接受初始值和 setter/getter,以便验证传递到对象中的数据,而不是盲目地接受给出的任何值,但这可能会在以后出现。这是你的两个选择。通常,为快速和脏的临时数据结构选择数组,为更复杂和持久的数据选择对象。由于我看不到您想用这些数据做什么,我不能严格地说是数组还是对象最适合这里。

千巷猫影

它已经很旧了,但还有一个没有提到的选择。你可以实现你在python中检查过的方式所以为了创建以下对象:(Python)obj = { "name": "john";}print(obj.name);我们将要做的:(PHP)$obj = '{  "name": "john"}';$obj = json_decode($obj);echo $obj->name;因为在 python 和 javascript 以及其他语言中,我猜他们对对象使用 json 格式。php 有一个内置函数可以将 json 字符串转换为对象,所以我们只需要将已知格式转换为字符串并告诉 php 解析它,我们最终会得到相同的结果。现在如果我们想向对象添加一些东西,可以通过以下方式完成:$obj->age = 22;var_dump($obj);输出:object(stdClass)#4 (2) {  ["name"]=>  string(4) "john"  ["age"]=>  int(22)}
随时随地看视频慕课网APP
我要回答