簡體   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