我遇到了这个问题,我正在创建的函数接收两个参数,$ codeList,$ priceList然后需要发送XML并且每个代码和价格必须添加一个以上的节点对于XML,这个我现在使用的代码,我有问题
$i = 0;
foreach ($price as $price) {
foreach ($SKU as $SKU) {
$i++;
$feed .='
<Message>
<MessageID>'.$i.'</MessageID>
<Price>
<SKU>'.$SKU.'</SKU>
<StandardPrice currency="USD">'.$price.'</StandardPrice>
</Price>
</Message>';
}
}
$feed .= '
</AmazonEnvelope>';
我创建两个数组来制作和示例:
CONFIG_DEBUG_MUTEXES
然后我这样做:
{{1}}
用于创建XML,但在输出中发送此消息:警告:为foreach()提供的参数无效。
答案 0 :(得分:2)
尝试为数组和变量使用不同的名称
$i = 0;
foreach ($price as $my_price) {
foreach ($SKU as $my_SKU) {
$i++;
$feed .='
<Message>
<MessageID>'.$i.'</MessageID>
<Price>
<SKU>'.$my_SKU.'</SKU>
<StandardPrice currency="USD">'.$my_price.'</StandardPrice>
</Price>
</Message>';
}
}
答案 1 :(得分:0)
您正在覆盖foreach中的变量。 您应该将$ price更改为$ price,$ SKU更改为$ SKU,然后使用如下:
$SKUs = array('ASUSVNA1','esx','rer','ASUSasVNA1','itemsdasd','item 24');
$prices = array(2,3,4,5,6,7);
foreach ($prices as $price) {
foreach ($SKUs as $SKU) {
//the rest of code
}
}
答案 2 :(得分:0)
不确定这是不是为什么它不起作用,但在foreach语句中,我绝不会将$ var用作$ var。我会像$ var或者其他东西一样做$ vars。不确定他们是否相互踩,但这可能是正在发生的事情。
答案 3 :(得分:0)
答案我们都是正确的,这是我的错误,但问题来自于这样做的代码,因为它打印了6 * 6倍的节点,我找到了另一种方法来解决这个问题:
$SKU = array('ASUSVNA1','esx','rer','ASUSasVNA1','itemsdasd','item 24');
$price = array(2,3,4,5,6,7);
创建此变量以存储两个数组
$result_array = [
'sku' => '',
'price' => ''
];
在此处存储SKU
foreach ($SKU as $SKU) {
$result_array['sku'][] = $SKU;
}
存储价格
foreach ($price as $price) {
$result_array['price'][] = $price;
}
现在在索引'sku'上创建一个foreach为$ index =&gt; $ value,$ index将允许我计算该数组中的每个记录(在这种情况下都有6个,所以这个例子很好),现在这些技巧出现在以下节点中:
StandardPrice currency =“USD”&gt;'。$ result_array ['price'] [$ index]。'
[$ index]允许我在result_array ['price']索引中传递所有索引
$i = 0;
foreach ($result_array['sku'] as $index => $value) {
$i++;
$feed .='
<Message>
<MessageID>'.$i.'</MessageID>
<Price>
<SKU>'.$value.'</SKU>
<StandardPrice currency="USD">'.$result_array['price'][$index].'</StandardPrice>
</Price>
</Message>';
}
$feed .= '
</AmazonEnvelope>';
问题解决了,谢谢大家。