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

如何在PHP中向对象添加新的键值对?,php,arrays,sqlite,object,Php,Arrays,Sqlite,Object,我想我的问题是双重的 在Python中,如果我这样做 x = {key: value} 我已经编了一本字典 在javaScript中,如果我做了与创建对象相同的事情 这在PHP中是什么?可能是因为我不知道这些术语 我正在和拉威尔一起做一个项目。我基本上有一个我正在访问的sqlite数据库。这将返回一个“对象”数组(用javaScript术语)。我想通过数组中的“objects”执行foreach循环,并向“object”添加一个新的键和值 其次,抱歉,我对php中的语法没有100%的把握: $

我想我的问题是双重的

在Python中,如果我这样做

x = {key: value}
我已经编了一本字典

在javaScript中,如果我做了与创建对象相同的事情

这在PHP中是什么?可能是因为我不知道这些术语

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

其次,抱歉,我对php中的语法没有100%的把握:

$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"}];

我知道这是一个超级简单的问题,但我正在努力找到合适的问题问谷歌。如果我问错了问题,请告诉我,我已经在用另一种语言很容易就能做的事情上挠了很久了。非常感谢您的帮助。

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

$objectArray[] = $newObject;
如果要向对象添加新属性,只需执行以下操作:

$object->newPropery = 'value';

你有两个选择。第一个只是一个
数组
。PHP中的数组是关联的,因此它们可以使用字符串作为键,而不仅仅是数字。你可以这样做:

$people = [
 [
  'name' => 'Jane Smith',
  'age' => 20,
 ],
 [
  'name' => 'Mary Sue',
  'age' => 30
 ]
]
class Person
{
    public $name;
    public $age;
    public $height;
}
要向这样的数组中添加内容,只需定义一个新键:
$people[0]['height']=2。如果愿意,您还可以使用
for
循环(或带有引用的
foreach
)根据某种公式将其添加到每个人

但是,这有点不好,因为数组会生成糟糕的数据结构:没有关于数组中可以包含哪些数据、如何使用这些数据等的预定义信息。相反,您通常希望声明一个类,至少如下所示:

$people = [
 [
  'name' => 'Jane Smith',
  'age' => 20,
 ],
 [
  'name' => 'Mary Sue',
  'age' => 30
 ]
]
class Person
{
    public $name;
    public $age;
    public $height;
}
然后您可以创建一个
$person=newperson()
并使用箭头语法设置值:
$person->name='Jane Smith'。理想情况下,您还希望构造函数接受初始值和setter/getter,以使验证传递到对象中的数据成为可能,而不是盲目地接受给定的任何值,但这可能会在以后发生


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

它非常古老,但还有一个选项没有提到

您可以实现在python中检查过的方法

为了创建以下对象:(Python)

我们将做:(PHP)

因为在python、javascript和其他语言中,我猜他们使用的是对象的json格式。 php有一个内置函数,可以将json字符串转换为对象 因此,我们只需要将已知的格式转换为字符串,并告诉php对其进行解析,我们将得到相同的结果

现在,如果我们想向对象添加一些内容,可以通过以下方式完成:

$obj->age = 22;
var_dump($obj);
输出:

object(stdClass)#4 (2) {
  ["name"]=>
  string(4) "john"
  ["age"]=>
  int(22)
}

你试过什么?所有示例都不是有效的PHP语法。如果您想了解PHP对象,文档和文档中有信息。数据是否以您在问题中显示的形式来自数据库?这是一个JSON字符串,不是有效的PHP数据结构。PHP同时具有对象和关联数组。对象是类的实例,而关联数组只是数据。您可以将数组强制转换为通用对象,该对象将成为内置
stdClass
的实例。在您的例子中,看起来您想要创建一个
person
类,而对象就是该类的实例。