获取多维数组中符合条件的行的第一级键,然后将新元素推入其中[重复]

问题描述 投票:0回答:1

我有一个多维数组,我正在尝试将另一个键/值对数组添加到现有数组中。

<?php
$finalArr = array();
$newArr = array(
    'title' => 'lorem',
    'vehicles' => array(
        'type' => 'sedan',
        'price' => 2900
    )
);
array_push($finalArr, $newArr);

我想根据特定的

cars
值向
title
部分添加其他数组。我尝试过使用
array_merge
array_push
到目前为止没有效果。这是我目前的尝试:

// Get existing vehicles array by index
$index = array_search('lorem', array_column($finalArr, 'title'));
$oldArr = $finalArr[$index]['vehicles'];

// Create new array and append it to existing vehicles array
$addArr = array(
    'type' => 'truck',
    'price' => 4750
);
array_push($oldArr, $addArr);

// Add $newArr back to overall array
array_push($finalArr[$index]['vehicles'], $oldArr);

print_r($finalArr);

这几乎让我得到了我想要的,除了它返回这个:

Array
(
    [0] => Array
        (
            [title] => lorem
            [vehicles] => Array
                (
                    [type] => sedan
                    [price] => 2900
                    [0] => Array
                        (
                            [type] => sedan
                            [price] => 2900
                            [0] => Array
                                (
                                    [type] => truck
                                    [price] => 4750
                                )

                        )

                )

        )

)

但是所需的输出将如下所示:

Array
(
    [title] => lorem
    [vehicles] => Array
        (
            [0] => Array
                (
                    [type] => sedan
                    [price] => 2900
                )

            [1] => Array
                (
                    [type] => truck
                    [price] => 4750
                )

        )

)
php arrays multidimensional-array
1个回答
1
投票

您应该如何更改代码。请注意,

vehicles
数组已经是多维的:

$finalArr = array();
$newArr = array(
    'title' => 'lorem',
    'vehicles' => array(
        // New dimension added here
        array(
            'type' => 'sedan',
            'price' => 2900,
        ),    
    )
);
array_push($finalArr, $newArr);

$index = array_search('lorem', array_column($finalArr, 'title'));

$addArr = array(
    'type' => 'truck',
    'price' => 4750
);

array_push($finalArr[$index]['vehicles'], $addArr);

print_r($finalArr);

小提琴在这里

© www.soinside.com 2019 - 2024. All rights reserved.