繁体   English   中英

用 PHP 中的动态内容填充数组

[英]Fill array with dynamic content in PHP

我需要用产品的动态列表填充一个数组。 为此,我使用以下代码:

$list_array = array(

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

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

    );

return $list_array;

如果我知道阵列中的每个产品,它就可以正常工作。 但在我的用例中,我不知道阵列中有哪些产品。

所以我想用动态数据填充数组。

我想出了这样的事情:

$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;

我知道数组确实有问题。 但我无法弄清楚它是什么。

您提交的代码无法使用。 短语法$a[] =...是将 append 数据转入$a数组,例如:

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

您还可以使用map function 以更有效的方式进行操作:

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

return array_map('reduce', $products);

它将执行 function reduce和替换数组中每个元素的值。 在此处完成文档: https://www.php.net/manual/en/function.array-map.php

您的问题是您正在覆盖循环内循环的$products数组。 更改循环中变量的名称以解决该问题:

$list_array = array();
foreach ( $products as $product ) {
    $list_array[] = array(
        'SKU'       => $product->id,
        'Title'     => $product->post_title,
        'Quantity'  => ''
    );
}
return $list_array;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM