skip to Main Content

I have a Multidimensional array with foreach loop,which shows only 9 values out of 15 in random order
//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

Answers


  1. Use array_slice to select the first 9 values from the shuffled array.

    $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>
          ';
    }
    
    Login or Signup to reply.
  2. array_rand() is the simplest and neatest way, I feel:

    $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>
              ';
    }
    
    Login or Signup to reply.
  3. Use array_slice to get first 9 elements.

    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
    
    Login or Signup to reply.
  4. use array_slice or array_splice

    Note: Both function have minor difference. so look on manual and choose as per your need.

    Best Of Luck

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search