数组PHP,将值存储到键中然后检索

时间:2016-10-27 19:01:37

标签: php arrays amazon-web-services

我遇到了这个问题,我正在创建的函数接收两个参数,$ 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()提供的参数无效。

4 个答案:

答案 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>';

问题解决了,谢谢大家。