kiarashi
kiarashi

Reputation: 493

Counting without foreach

While I know how to create a counting inside a foreach,

$i = -1;
foreach ($menu_items as $item => $value) :
    ...
$i--;       
endforeach;  

I want to create the same counting effect but my own code isn't inside a foreach. A sample of my code is like this:

<ul>
<li>...</li>
<li class="menu-item[<?php echo esc_attr( $count ); ?>]">...</li>
<li class="menu-item[<?php echo esc_attr( $count ); ?>]">
    <ul>
        <li class="menu-item[<?php echo esc_attr( $count ); ?>]"></li>
        <li class="menu-item[<?php echo esc_attr( $count ); ?>]"></li>
    </ul>
</li>
<li class="menu-item[<?php echo esc_attr( $count ); ?>]">...</li>
</ul>

Outcome should be like this.

<ul>
<li>...</li>
<li class="menu-item[-1]">...</li>
<li class="menu-item[-2]">...</li>
<li class="menu-item[-3]">
    <ul>
        <li class="menu-item[-4]"></li>
        <li class="menu-item[-5]"></li>
    </ul>
</li>
<li class="menu-item[-6]">...</li>
</ul>

Any help is much appreciated.

Upvotes: 0

Views: 75

Answers (2)

RiggsFolly
RiggsFolly

Reputation: 94662

You just need to decrement the counter as you go along with the --

Start by setting count to zero or whatever you want the counter to start at, as you have just before your foreach loop.

<ul>
<li>...</li>
<li class="menu-item[<?php echo esc_attr( $count-- ); ?>]">...</li>
<li class="menu-item[<?php echo esc_attr( $count-- ); ?>]">
    <ul>
        <li class="menu-item[<?php echo esc_attr( $count-- ); ?>]"></li>
        <li class="menu-item[<?php echo esc_attr( $count-- ); ?>]"></li>
    </ul>
</li>
<li class="menu-item[<?php echo esc_attr( $count-- ); ?>]">...</li>
</ul>

This will decrement the $count field AFTER displaying its current value.

If you were to use

<li class="menu-item[<?php echo esc_attr( --$count ); ?>]">...</li>

it would decrement the counter first and then display its value.

Upvotes: 1

Sarath Kumar
Sarath Kumar

Reputation: 2353

try this..

<ul>
<li>...</li>
<li class="menu-item[<?php $count = -1; echo esc_attr( $count ); ?>]">...</li>
<li class="menu-item[<?php echo esc_attr( --$count ); ?>]">
    <ul>
        <li class="menu-item[<?php echo esc_attr( --$count ); ?>]"></li>
        <li class="menu-item[<?php echo esc_attr( --$count ); ?>]"></li>
    </ul>
</li>
<li class="menu-item[<?php echo esc_attr( --$count ); ?>]">...</li>
</ul>

Upvotes: 0

Related Questions