foreach与foreach php

时间:2013-01-25 04:52:20

标签: php magento loops foreach

您好我有一个脚本,foreach中有一个foreach第一个 foreach用于唯一的id,但第二个foreach用于产品的相关图像,应该根据图像的数量进行循环。但是,它限制我只获取一个相关图像,我怎样才能获得所有相关图像?

$i=0;
foreach ($collection as $product_all) { 
    //echo $product_all->getId().'<br/>';
    if($i==10) break;  
    $id = $product_all->getId();        
    $neew = Mage::getModel('catalog/product')->load($id);         
    //echo'<pre>';
        echo 'active products id ===='.$neew ->getId().'<br/>';  
        echo 'active products name ===='.$neew->getname().'<br/>';    
        echo 'active products style_ideas ===='.$neew->getstyle_ideas().'<br/>';  
        echo 'active products size and fit ===='.$neew->getsize_fit().'<br/>';  
        echo 'active products short description ===='.$neew->getshort_description().'<br/>';  
        echo 'active products  description ===='.$neew->getdescription().'<br/>';  
        //print_r($neew); 
        if (count($neew->getMediaGalleryImages()) > 0){
            $i = 0 ;
            $j = 0 ;
            foreach ($neew->getMediaGalleryImages() as $_image){
                  $relative_image = Mage::helper('catalog/image')->init($neew->getProduct(), 'image', $_image->getFile())->resize(2000);
                  $relative_image1 = str_replace('/webApps/migration/productapi/new/','/',$relative_image);
                  //echo 'relative_image => '.$relative_image1.'<br/>';
                  $relative_image_save = $relative_image1 ;
                  $relative_image_save1 = explode('/', $relative_image_save);//explode / to get only image name
                  $end1 = end($relative_image_save1);
                  $relative_image3 = $end1;
                  //$handle1 = fopen( $relative_image3, 'w') or die('Cannot open file:  '. $relative_image);
                  $path12 = '/mnt/aviesta/development/webApps/migration/productapi/new/'.'sku-'.$neew->getsku().'_' .$i++.'.jpg';
                  copy($relative_image_save, $path12);
                  echo 'relative image with sku path_'.$j++.' ====>'.$path12.'<br/><br/>'; 
               }
           }
      $i++;
}

2 个答案:

答案 0 :(得分:0)

从您的代码中我认为问题可以通过在第二个foreach循环之前初始化数组来解决,并且将数据存储在该数组中可以帮助您获取所有图像....这是我从您的理解题。如果这是正确的..,下面的代码可能会起作用....

foreach()
{
    //Your code....
     $image_list = array();
     $i = 0;
     foreach()
      {
        // Your usual code 
       $image_list[$i] = your_image;
       //storing images one-by-one in your variable..
       $i++;
       }
}

您可以稍后返回变量或只是print_r();得到输出

答案 1 :(得分:0)

我想我已经在匆忙中发布了这个问题,该剧本很好,对于初始产品,产品只有一个图像,但是对于较新的产品有多个图像,脚本工作正常,感谢所有回复帖子.....