Php 使用键从foreach循环创建数组

Php 使用键从foreach循环创建数组,php,arrays,foreach,Php,Arrays,Foreach,我找不到我正在寻找的确切解决方案 我正在尝试从保留密钥的foreach循环创建一个数组。以下是我到目前为止的代码,但它只保留数组中的最后一个值: foreach($links as $link) { //runs scrape_amazon function for each of the links $ret = scrape_amazon($link); foreach($ret as $key => $value) { //echo $key; //e

我找不到我正在寻找的确切解决方案

我正在尝试从保留密钥的foreach循环创建一个数组。以下是我到目前为止的代码,但它只保留数组中的最后一个值:

foreach($links as $link) {
  //runs scrape_amazon function for each of the links
  $ret = scrape_amazon($link);

  foreach($ret as $key => $value) {
    //echo $key; 
    //echo $value;
    $final_results[$key] = $value;
  }
}
有人能帮我找到一个解决方案来保存所有的值和键吗


提前谢谢

如果需要一组just键,则需要执行此操作

$ret_keys = array_keys($ret);

你为什么这么做?它看起来像:

$final_results = $ret;

根据您最近的评论,这应该可以解决您的问题:

$ret = array();

foreach($links as $link) {
  $ret[] = scrape_amazon($link);
}

每次调用
scrape_amazon()
时,它都会将返回的数组添加到
$ret
中,使其成为一个数组。

您要的是一个键数组吗?根据您使用foreach循环的方式,在我看来,您的初始数组必须是$ret[key]格式=值?您的代码应该以
$final\u results
作为
$ret
的精确副本结束(假设它一开始是空的)。您希望发生什么?不,我有一个函数,它收集数据并将其放入$ret中,但每次运行时都会覆盖以前的值。我试图保留键和值,例如:[ASIN]=>123445[Name]=>Name[Retail]=>14.99。那么问题不在于您提供的代码,而在于将值分配给
$ret
时。正如Jon所说,上面只是创建了一个精确的
$ret
副本,并将其放入
$final\u results
。我知道$final\u results返回的结果与$ret相同。这就是问题所在。我曾想过使用array_push,但无法将每次$ret的结果构建到单个$final_结果数组中。唯一的解决方案是:$final_results[]=$ret;或$final_results[$ret['ASIN']]=$ret;非常感谢。我知道现在的问题是它必须是多维的,因为有3个键。谢谢你的帮助。这就产生了一个多维空间。谢谢@注册-看到你是这个网站的新手,我只是想提醒你接受答案。谢谢!:)
  // Create an empty array first      
  $final_results = array();
  foreach($links as $link) {
      //runs scrape_amazon function for each of the links
      $ret = scrape_amazon($link);
      $final_results[] = $ret; // DONE :)
  }