user3633186
user3633186

Reputation: 1540

IF or Switch inside of an array

Is it possible to do a if/else or switch statement inside an array ?

For example i have this array

'images' => array(
          array(
                'link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer .'.jpg'
          ),
      ),

Now i want to check if there are more than 1 images, if yes add an array. My thought was this, but it doesnt work.

    <?php

$images = (string)$product->aantalfotos;

'images' => array(
    switch ($images) {
        case 1:
            array(
                'link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer .'.jpg'
            ),
        break;

        case 2:
            array(
                'link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer .'.jpg'
            ),
            array(
                'link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer .'_2.jpg'
            ),
        break;

        case 3:
            array(
                'link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer .'.jpg'
            ),
            array(
                'link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer .'_2.jpg'
            ),
            array(
                'link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer .'_3.jpg'
            ),
        break;
    }
),

Upvotes: 0

Views: 58

Answers (2)

Leandro Papasidero
Leandro Papasidero

Reputation: 3738

You can do this:

aantalfotos;

        switch($images) {
            case 1:
                $x = array('link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer . '.jpg');
            break;

            case 2:
                $x = array('link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer . '.jpg',
                    array('link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer . '_2.jpg'));
            break;

            case 3:
                $x = array('link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer . '.jpg',
                array('link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer . '_2.jpg'),
                array('link' => 'http://graphics.edc-internet.nl/500/' . (string)$product->artikelnummer . '_3.jpg'));
            break;
        }

if(!empty($x)) {
    $images[] = ($x);
}

print_r($images);

Upvotes: 0

user2191247
user2191247

Reputation:

Try this code:

<?php

$images = (string)$product->aantalfotos;

for ($working = array(), $i = 1, $suffix = ''; $i <= $images; $i++)
{
    $working[] = array('link' => 'http://graphics.edc-internet.nl/500/'.(string)$product->artikelnummer.$suffix.'.jpg');
    $suffix = '_'.($i + 1);
}

// Use $working in 'images' => $working

?>

Upvotes: 1

Related Questions