带有foreach循环的PHP多维数组,只显示15个值中的9个值(按随机顺序)


PHP-Multidimensional array with foreach loop and show only 9 values out of 15 in random order

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

$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

使用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

使用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>
      ';
}

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>
          ';
}

使用array_slicearray_splice

注意:这两个功能有微小的差异。所以请查看手册并根据您的需要进行选择。

好运