简体   繁体   中英

Dynamically give list items <li> a unique class with PHP

I am dynamically populating a list based on what is in the database, and I would like each list item to have a unique class name - something simple, for example the first

  • would have the class item-1, and the second
  • would have the class item-2. This is the php code I am using to create the list:

      <?php $metas=trim(get_post_meta($post->ID,'hike_meta',true),''); $metas_arr=explode("\\n",$metas); $metas1=array_slice($metas_arr,0,3); $metas2=array_slice($metas_arr,3,3); ?> <div class="loca_meta"> <ul> <?php foreach($metas1 as $meta){ list($k, $v) = explode('|', $meta); echo "<li><span class='bold'>$k</span>:<br>$v</li>"; }?> </ul> </div> <div class="loca_meta"> <ul> <?php foreach($metas2 as $meta){ list($k, $v) = explode('|', $meta); echo "<li><span class='bold'>$k</span>:<br>$v</li>"; }?> </ul> </div> 

    What extra code do I need, to give each list item a unique class? As a side note, I am very much a beginner when it comes to php, so please let me know if you need any more information.

  • You can use for loop:

       <?php for($i = 0; $i < count($metas1); $i++){
             list($k, $v) = explode('|', $metas[$i]);
             echo "<li><span class="bold item-".$i+1.">$k</span>:<br>$v</li>";
          }?>
    

    Result will be:

    <li><span class="bold item-1"><!-- content --></span>:<br><!-- content --></li>
    <li><span class="bold item-2"><!-- content --></span>:<br><!-- content --></li>
    <li><span class="bold item-3"><!-- content --></span>:<br><!-- content --></li>
    

    and so on.

    You can add $counter variable to get the incremented value and assign it to class.

    <div class="loca_meta">
        <ul>
           <?php $counter = 0; foreach($metas1 as $meta){
                 list($k, $v) = explode('|', $meta);
                 echo "<li><span class='bold <?php echo "item_".$counter ?>'>$k</span>:<br>$v</li>";
              $counter++;
            }?>
         </ul>
         </div>
         <div class="loca_meta">
            <ul>
              <?php foreach($metas2 as $meta){
                    list($k, $v) = explode('|', $meta);
                     echo "<li><span class='bold <?php echo "item_".$counter ?>'>$k</span>:<br>$v</li>";
               $counter++;
              }?>
            </ul>
         </div>
    

    The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2024 STACKOOM.COM