それが最善の方法なのか正しい方法なのかはわかりませんが、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',
];
しかし、要点は、 Laravelコレクションを使用して同じ結果を得るにはどうすればよいかということです。つまり、Laravelコレクションの「目的のキー」を使用して新しい要素を追加/追加するにはどうすればよいですか?
を使おうとすると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配列の場合、角かっこを1組使用しますが、コレクションを使用すると、追加できず、ErrorExceptionが生成されます。 (E_NOTICE)オーバーロードされた要素の間接的な変更。
$collection['CODE-123'][] = 'some new item...';
まず、最初の宣言には、1つのアイテムに複数のデータセットを格納するために必要な括弧のセットが欠落していると思います。
$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"
]
]
}
]
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加