如何将循环遍历多维数组转换为函数

时间:2017-04-19 07:09:20

标签: php arrays for-loop

嗨目前我正在处理一些带有循环的多维数组运算。

实际上我必须将多维数组传递给函数,在该函数中我需要整个数组数据。

但是这里的问题是我只得到数组的单个项而不是函数中的所有数组项。

在我尝试的代码下方:

foreach($sp_data as $sp_product_data) // this loop is for another purpose
                {

                  $sp_product_details = (array)$sp_product_data;
                  $product_links = array(array(
                  'sku' => $gp_sku,
                  'link_type' => 'associated',
                  'linked_product_sku' => $sp_product_details['sku'], 
                  'linked_product_type' => 'simple',
                  'position' => '1',    
                  )
                ); 
             echo "<pre>";
            print_r(product_links); //When i am printing the data its shows me all array items

        $this->testproduct($product_links); // but when i am pass the data to function and in that function when i displayed data its gives only first array item
                }

我的功能:

function testproduct($product_links)
{
echo "<pre>";
print_r($product_links);
}

在功能中我只得到第一项数组。请帮助我缺少的东西

2 个答案:

答案 0 :(得分:1)

要显示整个数组,您必须这样做 使用此格式

$product_links[]=array(
              'sku' => $gp_sku,
              'link_type' => 'associated',
              'linked_product_sku' => $sp_product_details['sku'], 
              'linked_product_type' => 'simple',
              'position' => '1',    
                );
}#end of foreach loop
#now call the testproduct function. THis line must be outside the loop

$this->testproduct($product_links); 

答案 1 :(得分:1)

使用array_push 所以代码应该是这样的

$custom_product_data = array();
foreach($sp_data as $sp_product_data) {
  $sp_product_details = (array)$sp_product_data;
  $product_links = array(
      'sku' => $gp_sku,
      'link_type' => 'associated',
      'linked_product_sku' => $sp_product_details['sku'], 
      'linked_product_type' => 'simple',
      'position' => '1',    
  ); 

    if( is_array($product_links) ) {
      array_push($custom_product_data, $product_links);
    }
  }

  $this->testproduct($custom_product_data); 

注意

不要忘记在循环外使用testproduct函数。否则它不会给你结果。