add/append 如何按键新项目 Laravel Collection
How add/append new items by key Laravel Collection
我不知道这样做是不是最好的或正确的方法,但在 PHP 中,我只是愿意。
$array = [];
$array['CODE-123'][] = [
'name' => 'NAME 001',
'lastname' => 'LASTNAME 001',
];
$array['CODE-456'][] = [
'name' => 'NAME 004',
'lastname' => 'LASTNAME 004',
];
$array['CODE-123'][] = [
'name' => 'NAME 002',
'lastname' => 'LASTNAME 002',
];
$array['CODE-456'][] = [
'name' => 'NAME 005',
'lastname' => 'LASTNAME 005',
];
但重点是:如何使用LaravelCollection继续获得相同的结果?也就是说,我如何使用 Laravel Collection 中的 'desired key' 来 add/append 新元素?
如果我尝试使用 put()
,它会覆盖原始密钥内容。
$collection = collect();
$collection->put('CODE-123', [
'name' => 'NAME 001',
'lastname' => 'LASTNAME 001',
]);
$collection->put('CODE-456', [
'name' => 'NAME 004',
'lastname' => 'LASTNAME 004',
]);
比如我想添加一些新的项,在键'CODE-123'中,如果它是一个原生的PHP数组,我会使用一对方括号,但是使用collection,我不能,它生成一个 ErrorException (E_NOTICE) 重载元素的间接修改。
$collection['CODE-123'][] = 'some new item...';
首先,我认为您的初始声明缺少一组括号,这些括号是将多组数据存储在一个项目中所必需的。
$collection->put('CODE-123', [
[
'name' => 'NAME 001',
'lastname' => 'LASTNAME 001',
]
]);
但听起来您真正想要做的是创建一个集合中的集合。那为什么要打它呢?
$collection = collect();
$collection->put('CODE-123', collect([
[
'name' => 'NAME 001',
'lastname' => 'LASTNAME 001',
]
]));
$collection->put('CODE-456', collect([
[
'name' => 'NAME 004',
'lastname' => 'LASTNAME 004',
]
]));
$value = [
'name' => 'NAME 002',
'lastname' => 'LASTNAME 002',
];
$collection['CODE-123']->push($value);
dd($collection);
Collection {#1417 ▼
#items: array:2 [▼
"CODE-123" => Collection {#1406 ▼
#items: array:2 [▼
0 => array:2 [▼
"name" => "NAME 001"
"lastname" => "LASTNAME 001"
]
1 => array:2 [▼
"name" => "NAME 002"
"lastname" => "LASTNAME 002"
]
]
}
"CODE-456" => Collection {#1414 ▼
#items: array:1 [▼
0 => array:2 [▼
"name" => "NAME 004"
"lastname" => "LASTNAME 004"
]
]
}
]
}
我不知道这样做是不是最好的或正确的方法,但在 PHP 中,我只是愿意。
$array = [];
$array['CODE-123'][] = [
'name' => 'NAME 001',
'lastname' => 'LASTNAME 001',
];
$array['CODE-456'][] = [
'name' => 'NAME 004',
'lastname' => 'LASTNAME 004',
];
$array['CODE-123'][] = [
'name' => 'NAME 002',
'lastname' => 'LASTNAME 002',
];
$array['CODE-456'][] = [
'name' => 'NAME 005',
'lastname' => 'LASTNAME 005',
];
但重点是:如何使用LaravelCollection继续获得相同的结果?也就是说,我如何使用 Laravel Collection 中的 'desired key' 来 add/append 新元素?
如果我尝试使用 put()
,它会覆盖原始密钥内容。
$collection = collect();
$collection->put('CODE-123', [
'name' => 'NAME 001',
'lastname' => 'LASTNAME 001',
]);
$collection->put('CODE-456', [
'name' => 'NAME 004',
'lastname' => 'LASTNAME 004',
]);
比如我想添加一些新的项,在键'CODE-123'中,如果它是一个原生的PHP数组,我会使用一对方括号,但是使用collection,我不能,它生成一个 ErrorException (E_NOTICE) 重载元素的间接修改。
$collection['CODE-123'][] = 'some new item...';
首先,我认为您的初始声明缺少一组括号,这些括号是将多组数据存储在一个项目中所必需的。
$collection->put('CODE-123', [
[
'name' => 'NAME 001',
'lastname' => 'LASTNAME 001',
]
]);
但听起来您真正想要做的是创建一个集合中的集合。那为什么要打它呢?
$collection = collect();
$collection->put('CODE-123', collect([
[
'name' => 'NAME 001',
'lastname' => 'LASTNAME 001',
]
]));
$collection->put('CODE-456', collect([
[
'name' => 'NAME 004',
'lastname' => 'LASTNAME 004',
]
]));
$value = [
'name' => 'NAME 002',
'lastname' => 'LASTNAME 002',
];
$collection['CODE-123']->push($value);
dd($collection);
Collection {#1417 ▼
#items: array:2 [▼
"CODE-123" => Collection {#1406 ▼
#items: array:2 [▼
0 => array:2 [▼
"name" => "NAME 001"
"lastname" => "LASTNAME 001"
]
1 => array:2 [▼
"name" => "NAME 002"
"lastname" => "LASTNAME 002"
]
]
}
"CODE-456" => Collection {#1414 ▼
#items: array:1 [▼
0 => array:2 [▼
"name" => "NAME 004"
"lastname" => "LASTNAME 004"
]
]
}
]
}