Обновить значение многоуровневого массива

по запросу получаю такой массив:

$productArray = 
Array
(
    [0] => Array
        (
            [entryid] => MTU1NzE5NzM5IyMw
            [count] => 2
            [basePrice] => 450
            [deliveryCost] => 0
            [masterproductsID] => MTAxMTAxNzY4
            [code] => 101101768
            [name] => Immune Up Соленый арахис 100 г
            [sku] => alaSA004
            [id] => 7780
        )

    [1] => Array
        (
            [entryid] => MTU1NzE5NzM5IyMx
            [count] => 1
            [basePrice] => 650
            [deliveryCost] => 0
            [masterproductsID] => MTAxMTE1ODMz
            [code] => 101115833
            [name] => Immune Up Черный изюм 100 г
            [sku] => alaizum100
            [id] =>
)

Как видно в массиве с индексом 1 у параметра id пустое значение, нужно туда добавить значение, которое получаю в ответе из другого запроса. Как это сделать ?

вот код, который имеется:

foreach($productArray as $value) {

if (isset($value['id'])) { 
    echo 'Товар есть в Onebox'."\n";
    continue;
}
    // create product in Onebox
    echo 'Создаем товар в Onebox'."\n";
$data = requestToOnebox('api/product/add/', array(
                                                    'login' => 'login',
                                                    'password' => 'pass',
                                                    'name' => $value['name'],
                                                    'price' => $value['basePrice'],
                                                    //'brandname' => $productManufacturer0,
                                                    'customfield_kaspiproductid1' => $value['code'],
                                                    'customfield_kaspiproductsku2' => $value['sku']
                                                )
                        );

print_r($data);                           
$value['id'] = $data['productid'];
return $value;
                    }

Ответы (1 шт):

Автор решения: InDevX

Ничего возвращать не надо когда вы foreach'ом проходитесь. Нужно либо с $value работать по ссылке (foreach($productArray as &$value) {) и тогда можно напрямую в $value изменять данные ($value['id'] = $data['productid'];), либо как в примере ниже - через ключ ($key)

foreach($productArray as $key => $value) {

    if ( isset($value['id']) ) { 
        echo 'Товар есть в Onebox'."\n";
        continue;
    }
    // create product in Onebox
    echo 'Создаем товар в Onebox'."\n";
    $data = requestToOnebox(...);
                          
    $productArray[$key]['id'] = $data['productid'];
}
→ Ссылка