0

我有一个带有 foreach 循环的多维数组,它以随机顺序显示 15 个中的 9 个值
//Array Values

$sponsors = array(
    array('facebook','The biggest social network in the world.','http://www.facebook.com/'),
    array('adobe','The leading software developer targeted','http://www.adobe.com/'),
    array('microsoft','One of the top software companies','http://www.microsoft.com/'),
    array('sony','A global multibillion electronics','http://www.sony.com/'),
    array('dell','One of`enter code here` the biggest computer','http://www.dell.com/'),
    array('ebay','The biggest online auction and shopping websites.','http://www.ebay.com/'),
    array('digg','One of the most popular web 2.0 social networks.','http://www.digg.com/'),
    array('google','The company that redefined web search.','http://www.google.com/'),
    array('ea','The biggest computer game manufacturer.','http://www.ea.com/'),
    array('mysql','The most popular open source database engine.','http://www.mysql.com/'),
    array('hp','One of the biggest computer manufacturers.','http://www.hp.com/'),
    array('yahoo','The most popular network of social media portals','http://www.yahoo.com/'),
    array('cisco','The biggest networking and communications techno','http://www.cisco.com/'),
    array('vimeo','A popular video-centric social networking site.','http://www.vimeo.com/'),
    array('canon','Imaging and optical technology manu facturer.','http://www.canon.com/'));

//Shuffling the values
shuffle($sponsors);

//To process all values
foreach($sponsors as $company)
{
  if(isset($company[0]) && !in_array($company[0],$sponsors))
     {//to print only 9 values out of 15
      for($j=1; $j<=9; $j++)
      {
        echo'
           <div class="sponsor" title="Click to flip">
           <div class="sponsorFlip">
           <img src="img/sponsors/'.$company[0].'.png" alt="More about '.$company[0].'" />
           </div>
           <div class="sponsorData">
           <div class="sponsorDescription">'.$company[1].'</div>
           <div class="sponsorURL"><a href="'.$company[2].'">'.$company[2].'</a>
           </div>
           </div>
           </div>
          ';
      }
      }
}//end of for each
4

4 回答 4

1

使用array_slice获取前 9 个元素。

foreach (array_slice($sponsors, 0, 9) as $company) {
  echo'
    <div class="sponsor" title="Click to flip">
    <div class="sponsorFlip">
    <img src="img/sponsors/'.$company[0].'.png" alt="More about '.$company[0].'" />
    </div>
    <div class="sponsorData">
    <div class="sponsorDescription">'.$company[1].'</div>
    <div class="sponsorURL"><a href="'.$company[2].'">'.$company[2].'</a>
    </div>
    </div>
    </div>
    ';
}//end of for each
于 2012-07-30T10:41:24.493 回答
0

使用 array_slice 从打乱的数组中选择前 9 个值。

$sponsors = array_slice($sponsors, 0, 9);

foreach($sponsors as $company)
{
    echo'
       <div class="sponsor" title="Click to flip">
       <div class="sponsorFlip">
       <img src="img/sponsors/'.$company[0].'.png" alt="More about '.$company[0].'" />
       </div>
       <div class="sponsorData">
       <div class="sponsorDescription">'.$company[1].'</div>
       <div class="sponsorURL"><a href="'.$company[2].'">'.$company[2].'</a>
       </div>
       </div>
       </div>
      ';
}
于 2012-07-30T10:40:05.837 回答
0

array_rand()是最简单最整洁的方式,我觉得:

$sponsors = array(
    array('facebook','The biggest social network in the world.','http://www.facebook.com/'),
    array('adobe','The leading software developer targeted','http://www.adobe.com/'),
    array('microsoft','One of the top software companies','http://www.microsoft.com/'),
    array('sony','A global multibillion electronics','http://www.sony.com/'),
    array('dell','One of`enter code here` the biggest computer','http://www.dell.com/'),
    array('ebay','The biggest online auction and shopping websites.','http://www.ebay.com/'),
    array('digg','One of the most popular web 2.0 social networks.','http://www.digg.com/'),
    array('google','The company that redefined web search.','http://www.google.com/'),
    array('ea','The biggest computer game manufacturer.','http://www.ea.com/'),
    array('mysql','The most popular open source database engine.','http://www.mysql.com/'),
    array('hp','One of the biggest computer manufacturers.','http://www.hp.com/'),
    array('yahoo','The most popular network of social media portals','http://www.yahoo.com/'),
    array('cisco','The biggest networking and communications techno','http://www.cisco.com/'),
    array('vimeo','A popular video-centric social networking site.','http://www.vimeo.com/'),
    array('canon','Imaging and optical technology manufacturer.','http://www.canon.com/')
);

for ($i = 0; $i < 9; $i++) {
  $company = array_splice($sponsors, array_rand($sponsors), 1);
  echo'
           <div class="sponsor" title="Click to flip">
           <div class="sponsorFlip">
           <img src="img/sponsors/'.$company[0].'.png" alt="More about '.$company[0].'" />
           </div>
           <div class="sponsorData">
           <div class="sponsorDescription">'.$company[1].'</div>
           <div class="sponsorURL"><a href="'.$company[2].'">'.$company[2].'</a>
           </div>
           </div>
           </div>
          ';
}
于 2012-07-30T10:41:15.850 回答
0

使用array_slicearray_splice

注意:这两个功能有细微的差别。因此请查看手册并根据您的需要进行选择。

祝你好运

于 2012-07-30T10:41:34.217 回答