php - 如何通过键添加/附加新项目 Laravel Collection

标签 php laravel laravel-collection

我不知道这样做是否是最好或正确的方法,但在 PHP 中,我只是愿意。

        $array = [];

        $array['CODE-123'][] = [
            'name' => 'NAME 001',
            'lastname' => 'LASTNAME 001',
        ];

        $array['CODE-456'][] = [
            'name' => 'NAME 004',
            'lastname' => 'LASTNAME 004',
        ];

php array

        $array['CODE-123'][] = [
            'name' => 'NAME 002',
            'lastname' => 'LASTNAME 002',
        ];


        $array['CODE-456'][] = [
            'name' => 'NAME 005',
            'lastname' => 'LASTNAME 005',
        ];

php array append by key

但重点是:如何使用 Laravel Collection 继续获得相同的结果?也就是说,我如何使用 Laravel 集合中的“所需键”添加/附加新元素?

如果我尝试使用 put(),它会覆盖原始 key 内容。

        $collection = collect();

        $collection->put('CODE-123', [
            'name' => 'NAME 001',
            'lastname' => 'LASTNAME 001',
        ]);

        $collection->put('CODE-456', [
            'name' => 'NAME 004',
            'lastname' => 'LASTNAME 004',
        ]);

enter image description here

例如,我想添加一些新项,在键“CODE-123”中,如果它是原生 PHP 数组,我会使用一对方括号,但使用集合,我不能,它生成 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 - 如何通过键添加/附加新项目 Laravel Collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58274526/

相关文章:

php - 我需要不寻常的排序 mysql 结果

PHP MVC : Registry class

php - 具有相同密码的不同帐户

javascript - 使用 formData 和 Axios 的 PATCH 请求的输入数据在 Laravel 上不可用

php - Laravel 集合 mapWithKeys

laravel - 检查该元素在集合中依次出现

php - DataTables 第 2 页的分页未调用放大弹出窗口

php - Laravel 二级关系查询

php laravel 返回 foreach 中的所有数据

php - Laravel 集合 - 扁平化不起作用