0

我有一系列供应商,称为:

$listOfVendors 

在我看来,我用一个 foreach 遍历这个数组。

<?php foreach($listOfVendors as $vendor):?>         

    <p class="vendor">
        <span class="vendor-title"><?php echo $vendor->name ?>(<?php echo $vendor->country ?>)</span>, 
        <?php echo $vendor->goods ?>, <a href="<?php echo $vendor->site_adres ?>" class="vendor-link"><?php echo $vendor->site_adres ?></a>
    </p>                                            

<?php endforeach ?> 

每个供应商对象都具有以下属性:

vendor_Id名称国家商品site_addressactivity_Id。最后一个,activity_Id,是表活动的 FK,目前有两种类型的活动:经销商和艺术家。

现在我想为每种类型的供应商添加一次标题。所以想要得到类似的东西:

艺术家

Vendor1(DE),Eigen 海报 ea 商品,http://www.linktosite.com

经销商

Vendor2(BE),玩具,DVD,书籍,http: //www.anotherlink.be

Vendor3(FR),商品,http: //www.anotherlink2link.be

我该怎么做呢?我似乎无法理解这个看似简单的事情。

编辑解决方案

控制器活动 -> 功能供应商

//Get the vendor information and add the needed headers
//Here I get all the vendors
if($listOfVendors = $this->atsusacon_model->get_records()) { 
    foreach($listOfVendors as $vendor) {
        $listOfVendorsByType[$vendor->activities_Id][] = $vendor;   
    }   
    $data['listOfVendorsByType'] = $listOfVendorsByType;    
    var_dump($listOfVendorsByType);
}   

查看活动/供应商

<section class="vendors-overview twelvecol clearBoth">

    <?php foreach($listOfVendorsByType as $activity):?> 

        <?php if ($activity[0]->activities_Id == 1) :?> 
            <h3>Artists</h3>
         <?php else :?>
            <h3>Dealers</h3>
        <?php endif ?>

        <?php foreach($activity as $vendor):?>      

            <p class="vendor">
                <span class="vendor-title"><?php echo $vendor->name ?>(<?php echo $vendor->country ?>)</span>, <?php echo $vendor->goods ?>, <a href="<?php echo $vendor->site_address ?>" class="vendor-link"><?php echo $vendor->site_address ?></a>
            </p>                                    

        <?php endforeach ?>         
    <?php endforeach ?> 

</section>

我可以让它更有活力,但就目前而言,这正是它应该的样子。

$listOfVendorsByType 的 var_dump 如下所示:

Var_dump($listOfVendorsByType)

4

3 回答 3

1

猜猜你必须获取外键的数据,而不是循环两次:确保正确“链接”供应商和活动。

foreach (activities ...) {
  // looping 2 times
  foreach (vendor ...) {
    // looping x times (=amount of vendors)
    ...
  }
}
于 2012-05-18T13:38:13.583 回答
1

您必须创建一个嵌套数组:

<?php 
 foreach($listOfVendors as $vendor) {
   $vendorsByType[$vendor['activities_id']][] = $vendor;
 }
?> 

现在您只需要使用两个 foreach 循环遍历这个嵌套数组。

于 2012-05-18T13:39:16.017 回答
1

添加这个数组

$header = array( "header1", "header2", "header3" );

//现在 $header[0] = "header1" $header[1] = "header2" 以此类推

$i=0;
<?php foreach($listOfVendors as $vendor):?>         
<p class="header">
<?php echo $header[$i]; $i++; ?>
</p>
<p class="vendor">
    <span class="vendor-title"><?php echo $vendor->name ?>(<?php echo $vendor->country ?>)</span>, 
    <?php echo $vendor->goods ?>, <a href="<?php echo $vendor->site_adres ?>" class="vendor-link"><?php echo $vendor->site_adres ?></a>
</p>                                            

<?php endforeach ?> 
于 2012-05-18T13:44:51.743 回答