我需要用一个动态的产品列表填充一个数组。为此,我使用以下代码:
$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;我知道数组确实有问题。但我想不出那是什么。
发布于 2020-04-08 15:29:30
您的问题是覆盖了在循环中循环的$products数组。更改循环中变量的名称以修复此问题:
$list_array = array();
foreach ( $products as $product ) {
$list_array[] = array(
'SKU' => $product->id,
'Title' => $product->post_title,
'Quantity' => ''
);
}
return $list_array;发布于 2020-04-08 15:32:50
您提交的代码无法工作。简短的语法$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并替换数组中每个元素的值。请在此处完成文档:https://www.php.net/manual/en/function.array-map.php
https://stackoverflow.com/questions/61095296
复制相似问题