为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
沧海一幻觉 2021-11-26 16:04:43
我想我的问题有两个方面在 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"}];我知道这是一个非常简单的问题,但我正在努力寻找合适的问题来问谷歌。如果我问错了问题,请赐教我我一直在挠头太久了,我可以用另一种语言轻松做到这一点。我真的很感谢你的帮助。
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

这将在对象数组的末尾追加新对象

$objectArray[] = $newObject;

如果要向对象添加新属性,只需执行以下操作:

$object->newPropery = 'value';


查看完整回答
反对 回复 2021-11-26
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

你在这里有两个选择。第一个只是一个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,以便验证传递到对象中的数据,而不是盲目地接受给出的任何值,但这可能会在以后出现。


这是你的两个选择。通常,为快速和脏的临时数据结构选择数组,为更复杂和持久的数据选择对象。由于我看不到您想用这些数据做什么,我不能严格地说是数组还是对象最适合这里。


查看完整回答
反对 回复 2021-11-26
?
千巷猫影

TA贡献1829条经验 获得超7个赞

它已经很旧了,但还有一个没有提到的选择。


你可以实现你在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)

}


查看完整回答
反对 回复 2021-11-26
  • 3 回答
  • 0 关注
  • 991 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信