Search code examples
phparraysassociative-array

PHP - Find whether an array element is odd or even


I'm having an array of items like this:

$data = array(
            'item1' => array( // is even
                'icon' => 'commenting',
                'content' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. ',
            ), 
            'item2' => array(// is odd
                'icon' => 'sticky-note',
                'content' => 'Debitis id eligendi assumenda, cumque optio veniam eos perferendis molestias explicabo odit',
            ),
            'item3' => array(// is even
                'icon' => 'users',
                'content' => 'Libero, suscipit, quos. Quae praesentium tempore minima quod tempora odio',
            ),
            'item4' => array(// is odd
                'icon' => 'thumbs-o-up',
                'content' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. ',
            ),
            'item5' => array(// is even
                'icon' => 'wrench',
                'content' => 'Debitis id eligendi assumenda, cumque optio veniam eos perferendis molestias explicabo odi',
            ),
        );

What I want to do is, when I loop through the elements of the array in order to output them, to detect whether each element is odd or even, for instance:

foreach ($data as $key => $value) {
    echo '<h1>' . $key . '</h1>';
    echo '<p>' . $value['icon'] . '</p>';
    echo '<p>' . $value['content'] . '</p>';
    echo '<p> (Item is odd or even) </p>'; // * Show wheather is odd or even here
}

Solution

  • Just declare a counter and iterate.

    $counter = 1;
    foreach ($data as $key => $value) {
        echo '<h1>' . $key . '</h1>';
        echo '<p>' . $value['icon'] . '</p>';
        echo '<p>' . $value['content'] . '</p>';
        echo '<p> ' . (($counter % 2)? 'odd': 'even') . ' </p>'; // * Show whether the position is odd or even here
        $counter++;
    }