Заполнить массив динамическим c содержимым в PHP - PullRequest
1 голос
/ 08 апреля 2020

Мне нужно заполнить массив динамическим c списком товаров. Для этого я использую следующий код:

$list_array = array(

        $products[] = array(
            'SKU' => '0001',
            'Title' => 'Bread',
            'Quantity' => '',
        ),

        $products[] = array(
            'SKU' => '0002',
            'Title' => 'Butter',
            'Quantity' => '',
        )

    );

return $list_array;

Это прекрасно работает, если я знаю каждый продукт в массиве. Но в моем случае использования я понятия не имею, какие продукты находятся в массиве.

Поэтому я хочу заполнить массив динамическими данными c.

Я придумал что-то такое:

$products = get_posts( 'numberposts=-1&post_status=publish&post_type=product' );

foreach ( $products as $product ) {

    $products[] = array(
        'SKU'       => $product->id,
        'Title'     => $product->post_title,
        'Quantity'  => '',
    ),

}

return $products;

Я знаю, что с массивом действительно что-то не так. Но я не мог понять, что это такое.

Ответы [ 2 ]

3 голосов
/ 08 апреля 2020

Код, который вы отправили, не может работать. Краткий синтаксис $a[] = ... предназначен для добавления данных в массив $a, например:

$a = [];
$a[] = 1;
$a[] = 2;
// $a = [1, 2]

Вы также можете сделать это более эффективным способом с помощью функции map:

function reduce($product)
{
    return array(
        'SKU'       => $product->id,
        'Title'     => $product->post_title,
        'Quantity'  => '',
    );
}

return array_map('reduce', $products);

Он выполнит функцию reduce и заменит значение для каждого элемента вашего массива. Заполните c здесь: https://www.php.net/manual/en/function.array-map.php

1 голос
/ 08 апреля 2020

Ваша проблема в том, что вы перезаписываете массив $products, который вы зацикливаете внутри l oop. Измените имя переменной в l oop, чтобы исправить это:

$list_array = array();
foreach ( $products as $product ) {
    $list_array[] = array(
        'SKU'       => $product->id,
        'Title'     => $product->post_title,
        'Quantity'  => ''
    );
}
return $list_array;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...