simplifying a whole stack of codes in for loop

Discussion in 'PHP' started by gilgalbiblewheel, Jul 29, 2008.

  1. #1
    Is it possible in simplifying this stack of codes? They all have things in common but have differences as well:
    $i=0;
    if (!empty($keyword1))
    	{
    		echo "<span class='' id='' style='font-weight: bold; color: red;'> ".$keyword1."</span>\n";
    		$i++;
    	}
    if (!empty($keyword2))
    	{
    	  if ($i > 0)
    		{
    			echo  " + ";
    		}
    		echo "<span class='' id='' style='font-weight: bold; color: blue;'> ".$keyword2."</span>\n";
    	}
    if (!empty($keyword3))
    	{
    	  if ($i > 0)
    		{
    			echo  " + ";
    		}
    		echo "<span class='' id='' style='font-weight: bold; color: blue;'> ".$keyword3."</span>\n";
    			$i++;
    	}
    if (!empty($keyword4))
    	{
    	  if ($i > 0)
    		{
    			echo  " + ";
    		}
    		echo "<span class='' id='' style='font-weight: bold; color: green;'> ".$keyword4."</span>\n";
    		$i++;
    	}
    if (!empty($keyword5))
    	{
    	  if ($i > 0)
    		{
    			echo  " + ";
    		}
    		echo "<span class='' id='' style='font-weight: bold; color: orange;'> ".$keyword5."</span>\n";
    		$i++;
    	}
    if (!empty($keyword6))
    	{
    	  if ($i > 0)
    		{
    			echo  " + ";
    		}
    		echo "<span class='' id='' style='font-weight: bold; color: purple;'> ".$keyword6."</span>\n";
    		$i++;
    	}
    if (!empty($keyword7))
    	{
    	  if ($i > 0)
    		{
    			echo  " + ";
    		}
    		echo "<span class='' id='' style='font-weight: bold; color: aqua;'> ".$keyword7."</span>\n";
    		$i++;
    	}						
    if (!empty($keyword8))
    	{
    	  if ($i > 0)
    		{
    			echo  " + ";
    		}
    		echo "<span class='' id='' style='font-weight: bold; color: aqua;'> ".$keyword8."</span>\n";
    		$i++;
    	}
    if ($_GET['book_spoke'] == 'Book_Spoke'){
    	{
    	  if ($i > 0)
    		{
    			echo  " AND ";
    		}
    		echo "<span class='' id='' style='font-weight: bold; color: black;'> in BOOK SPOKE ".$spoke."</span>\n";
    		$i++;
    	}	
    }
    if ($_GET['chapter_spoke'] == 'Chapter_Spoke'){
    	{
    	  if ($i > 0)
    		{
    			echo  " AND ";
    		}
    		echo "<span class='' id='' style='font-weight: bold; color: black;'> in CHAPTER SPOKE ".$spoke."</span>\n";
    		$i++;
    	}	
    }
    if ($_GET['verse_spoke'] == 'Verse_Spoke'){
    	{
    	  if ($i > 0)
    		{
    			echo  " AND ";
    		}
    		echo "<span class='' id='' style='font-weight: bold; color: black;'> in VERSE SPOKE ".$spoke."</span>\n";
    		$i++;
    	}	
    }
    echo '<br />';
    PHP:

     
    gilgalbiblewheel, Jul 29, 2008 IP
  2. andrewgjohnson

    andrewgjohnson Active Member

    Messages:
    180
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    53
    #2
    Basically you want to get all these keywords into an array and loop through it. Try something like:

    
    $keywords = array();
    $keywords[sizeof($keywords)] = $keyword1;
    $keywords[sizeof($keywords)] = $keyword2;
    $keywords[sizeof($keywords)] = $keyword3;
    $keywords[sizeof($keywords)] = $keyword4;
    $keywords[sizeof($keywords)] = $keyword5;
    $keywords[sizeof($keywords)] = $keyword6;
    $keywords[sizeof($keywords)] = $keyword7;
    $keywords[sizeof($keywords)] = $keyword8;
    
    $first_keyword = 1;
    
    for ($i = 0;$i <= sizeof($keywords);$i++)
    {
       if (!empty($keywords[$i]))
       {
          if ($first_keyword == 0)
             echo " + ";
    
          echo "<span class='' style='font-weight: bold; color: aqua;'> " . $keywords[$i] . "</span>\r\n";
          $first_keyword = 0;
       }
    }
    
    PHP:
    Also note that doing id='' is a bad idea. Just leave id out or give each element a unique value. Also use "\r\n" instead of just "\r" or just "\n" - this way all users will get the carriage return.

    DISCLAIMER: HAVEN'T TESTED
     
    andrewgjohnson, Jul 29, 2008 IP
  3. matthewrobertbell

    matthewrobertbell Peon

    Messages:
    781
    Likes Received:
    35
    Best Answers:
    0
    Trophy Points:
    0
    #3
    $keywords[] > $keywords[sizeof($keywords)]
     
    matthewrobertbell, Jul 29, 2008 IP