rpivovar
rpivovar

Reputation: 3438

How to get value from next iteration of foreach loop

I'm trying to print out entries from a SQL database. Some of the entries are images, and I want to parse those and put them in appropriate HTML markup.

Database Example

id | datatype  | typetext

78 | paragraph | "hello"
79 | image     | "image.jpg"
80 | paragraph | "goodbye"

The column datatype signifies what type of data is being stored in a given row, and I want to catch when the value of datatype is "image" - then jump to the following typetext column and prepare the appropriate markup for this image.

For instance, some psuedo-code of what I'm trying to do:

if(column is datatype){
    if(datatype == 'image'){
        echo '<p>' . data inside accompanying typetext column . '</p>';
    }
}

Here's my current code:

//the array of the blog entry
foreach($entry as $key => $entryUnit){

    //the array of the entry unit
    foreach($entryUnit as $column => $cell){

        if($column == 'datatype'){
            if($key == 'image'){
                echo '<br/>';
                echo '<p style="color: pink;">' $cell . $entryUnit[$column + 1] . '</p>';
                echo '<br/>';
            }
        }

        else if($column == 'typetext'){
            echo '<br/>';
            echo $cell;
            echo '<br/>';
        }
    }
}

In the first if statement, I try jumping to the next column with echo '<p style="color: pink;">' $cell . $entryUnit[$column + 1] . '</p>';, but this doesn't work.

I've also tried utilizing the next() function, like:

echo '<p>' . next($cell) . '</p>';`

..but this also doesn't work as I thought it would.

Upvotes: 1

Views: 448

Answers (2)

Rajdeep Paul
Rajdeep Paul

Reputation: 16963

You don't need that nested foreach loops, you can everything in just one simple foreach loop.

foreach($entry as $entryUnit){
    if($entryUnit['datatype'] == "image"){
        echo '<br/>';
        echo '<p style="color: pink;">' . $entryUnit['typetext'] . '</p>';
        echo '<br/>';
    }elseif($entryUnit['datatype'] == "paragraph"){
        echo '<br/>';
        echo $entryUnit['typetext'];
        echo '<br/>';
    }
}

Upvotes: 3

Joaquin Peraza
Joaquin Peraza

Reputation: 343

Somethink like this should work:

 //the array of the blog entry
foreach($entry as $key => $entryUnit){
$i=0;
    //the array of the entry unit
    foreach($entryUnit as $column => $cell){

        if($column == 'datatype'){
            if($key == 'image'){
$i++;
                echo '<br/>';
                echo '<p style="color: pink;">' $cell . $entryUnit[$i] . '</p>';
                echo '<br/>';
            }
        }

        else if($column == 'typetext'){
            echo '<br/>';
            echo $cell;
            echo '<br/>';
        }
    }
}

Upvotes: 2

Related Questions