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

Php 数组,将值存储到键中,然后检索,php,arrays,amazon-web-services,Php,Arrays,Amazon Web Services,我遇到了这个问题,我正在创建的函数接收两个参数,$codeList,$priceList,这两个参数都需要发送一个XML,对于每个代码和价格,必须向XML中添加一个节点,这就是我现在使用的代码,我遇到了问题 $feed = ' <?xml version="1.0" encoding="utf-8" ?> <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespa

我遇到了这个问题,我正在创建的函数接收两个参数,$codeList,$priceList,这两个参数都需要发送一个XML,对于每个代码和价格,必须向XML中添加一个节点,这就是我现在使用的代码,我遇到了问题

$feed = '
 <?xml version="1.0" encoding="utf-8" ?> 
  <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
  <DocumentVersion>1.01</DocumentVersion> 
  <MerchantIdentifier>XXXXXXX</MerchantIdentifier> 
</Header>
  <MessageType>Price</MessageType>';
然后我会这样做:

$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>';
$i=0;
foreach($price作为$price){
foreach($SKU作为$SKU){
$i++;
$feed.='
“.$i.”
“.$SKU”
“.$price。”
';
}
}
$feed.='
';

用于创建XML,但在输出中,此消息为send:Warning:为foreach()提供的参数无效。

您正在覆盖foreach中的变量。 您应该将$price更改为$prices,$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
    }
}

您正在覆盖foreach中的变量。 您应该将$price更改为$prices,$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
    }
}

尝试为数组和变量使用不同的名称

  $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>';
    }
  }
$i=0;
foreach(价格为$my_价格){
foreach($SKU作为$my_SKU){
$i++;
$feed.='
“.$i.”
“.$my_SKU”
“.$我的价格。”
';
}
}

尝试为数组和变量使用不同的名称

  $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>';
    }
  }
$i=0;
foreach(价格为$my_价格){
foreach($SKU作为$my_SKU){
$i++;
$feed.='
“.$i.”
“.$my_SKU”
“.$我的价格。”
';
}
}

不确定这是否是它不起作用的原因,但在foreach语句中,我永远不会将$var用作$var。我总是喜欢将$var用作$var之类的东西。不确定它们是否互相踩在一起,但这可能就是正在发生的事情。

不确定这是否是它不起作用的原因,但在foreach语句中,我永远不会使用$var作为$var。我总是喜欢将$var作为$var或其他东西。不确定他们是否互相踩在一起,但这可能就是正在发生的事情。

答案我们都是正确的这是我的一个错误,但是这样做的代码出现了一个问题,因为它打印了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=>$value,$index将允许我计算该数组中的每一条记录(在本例中,这两条记录都有6条,因此在本例中很好),现在技巧出现在以下节点中:

StandardPrice currency=“USD”>。$result\u数组['price'][$index].

[$index]允许我遍历结果数组['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>';
$i=0;
foreach($result_数组['sku']作为$index=>$value){
$i++;
$feed.='
“.$i.”
“.$value。”
'.$result_数组['price'][$index].'
';
}
$feed.='
';

问题解决了,谢谢大家。

答案我们都是正确的这是我的一个错误,但是这样做的代码出现了一个问题,因为它打印了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=>$value,$index将允许我计算该数组中的每一条记录(在本例中,这两条记录都有6条,因此在本例中很好),现在技巧出现在以下节点中:

StandardPrice currency=“USD”>。$result\u数组['price'][$index].

[$index]允许我遍历结果数组['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>';
$i=0;
foreach($result_数组['sku']作为$index=>$value){
$i++;
$feed.='
“.$i.”
“.$value。”
'.$result_数组['price'][$index].'
';
}
$feed.='
';

问题解决了,谢谢大家。

现在非常准确,问题是他正在打印6*6次节点,似乎我的方法不好,必须找到另一种方法。@AlejandroTorres您应该看看如何在两个阵列上操作单个foreach。。搜索一下。非常准确,现在的问题是他打印了6*6次节点,似乎我的方法不好,必须找到另一种方法。@AlejandroTorres你应该看看如何在两个数组上操作一个foreach。。搜索一下这个。。