Laravel 5 合并数组

8

我将尝试将一个随机数字字符串的表单输入与一个数组合并。

在我的表单中,我有:

<input type="text" name="purchase_order_number" id="purchase_order_number" value="{{ $purchase_order_number }}" />

在控制器中:

public function store(CandidateRequest $request)
{
    $candidateInput = Input::get('candidates');
    $purchaseOrderNumber = Input::get('purchase_order_number');

    foreach ($candidateInput as $candidate)
    {

        $data = array_merge($candidate, [$purchaseOrderNumber]);

        $candidate = Candidate::create($data);

        dd($data);

当我执行dd($data)时,可以获取到我的purchase_order_number,但如何将其分配给表中的那一行?
array:6 [▼
  "candidate_number" => "5645"
  "givennames" => "fgfgf"
  "familyname" => "dfgfg"
  "dob" => "01/01/2015"
  "uln" => "45565445"
  0 => "5874587"
]

Many thanks,

7个回答

21

我在得到一些帮助后理解了这个问题的答案:需要添加:

$data = array_merge($candidate, ['purchase_order_number' => $purchaseOrderNumber]);

感谢其他所有尝试帮助的人 :)


11
尝试这个:
use Illuminate\Support\Arr;
$array = Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

更多信息:Laravel 助手函数


嗨!感谢您抽出时间回答问题!您能否写得更详细一些,解释一下代码为什么有效呢? - Max

4

你可以尝试这个方法:

$data = array_merge($candidate, compact('purchaseOrderNumber'));

3

另一种做法(我认为最简单的方法)是进行数组联合

$candidate += ['purchase_order_number' => $purchaseOrderNumber]; 
+ 运算符返回左侧数组连接上右侧数组的结果;对于两个数组中都存在的键,将使用左侧数组的元素,而右侧数组的匹配元素将被忽略。

3
 $data = array_merge(['item'=>$item->toArray()], ['chef' => $chef->toArray()]);

3
虽然这样做可能解决问题,但最好提供一些解释说明你正在做什么。 - mbuechmann

1
$data = $firstArray->merge($secondArray);

2
merge 方法是 Illuminate\Support\Collection 类的一部分。因此,要使用它,$firstArray 必须是一个集合 - Wesley Gonçalves

0

试试这个:

$data = [];

foreach ($candidateInput as $candidate)
    array_push($data,$candidate);

 array_merge($data,$purchaseOrderNumber);

 $candidate = Candidate::create($data);

 dd($data);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接