[英]How do I add a new key value pair to an object in 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"}];
我知道這是一個非常簡單的問題,但我正在努力尋找合適的問題來問谷歌。 如果我問錯了問題,請賜教我我一直在撓頭太久了,我可以用另一種語言輕松做到這一點。 我真的很感謝你的幫助。
這將在對象數組的末尾追加新對象
$objectArray[] = $newObject;
如果要向對象添加新屬性,只需執行以下操作:
$object->newPropery = 'value';
您在這里有兩個選擇。 第一個只是一個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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.