[英]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.