具有存储在行中的值的Echo数组

What is the best way to echo out an array where the values are grouped:

Array (
[0] => Service, Service, Service
[1] => 27 february, 2017, 27 march, 2017, 27 april, 2017
[2] => 08:00, 08:00, 08:00
)

If i want the result to be:

Service, 27 february, 2017 at 08:00.

Service, 27 march, 2017 at 08:00.

Service, 27 april, 2017 at 08:00.

This is what i have come up with so far:

<?php
$string = "Service, Service, Service, 8 mars, 2017, 22 mars, 2017, 5 april, 2017, 08:00, 08:00, 08:00";

    $pattern = '/(\d+) (\w+), (\d+)/i'; //remove comma before year
    $replacement = '${1} $2 $3';
    $fixed = preg_replace($pattern, $replacement, $string);

    $array = explode(', ', $fixed); 

    $i=0;

    foreach($array as $value) {
        echo $value.", ";
        $i++;

        if ($i == 3) {
            echo '<br>';
            $i = 0;
        }
    }

?>

The output:

Service, Service, Service,

8 mars 2017, 22 mars 2017, 5 april 2017,

08:00, 08:00, 08:00,

So they are still in the wrong order... I just cant figure out how to sort the array and group the values i want one after another insted of in a row.

The sorting Arrays functions doesn´t work for this. Got any ideas?

There will be many ways to skin this cat.

I have endeavored to provide a flexible solution that you (or anyone else) can simply modify if/when your string contains more or less than 3 rows of values

$string="Service, Service, Service, 8 mars, 2017, 22 mars, 2017, 5 april, 2017, 08:00, 08:00, 08:00";

$string=preg_replace('/(\d{1,2}\s\w+),(\s\d{4})/','$1$2',$string);
/* "Service, Service, Service, 8 mars 2017, 22 mars 2017, 5 april 2017, 08:00, 08:00, 08:00" */

$array=explode(', ',$string); // divide at comma&space's
/*  array (
        0 => 'Service',
        1 => 'Service',
        2 => 'Service',
        3 => '8 mars 2017',
        4 => '22 mars 2017',
        5 => '5 april 2017',
        6 => '08:00',
        7 => '08:00',
        8 => '08:00'
    ) */
$rows=3;  // change this if your original string holds > or < 3 rows
$array=array_chunk($array,$rows); // group elements into specified number of rows
/*  array (
        0 => array (
            0 => 'Service',
            1 => 'Service',
            2 => 'Service'
        ),
        1 => array (
            0 => '8 mars 2017',
            1 => '22 mars 2017',
            2 => '5 april 2017'
        ),
        2 => array (
            0 => '08:00',
            1 => '08:00',
            2 => '08:00'
        )
    ) */

// loop indexes of each element in the first sub-array (group/chunk)
foreach(array_keys($array[0]) as $key){
    // access each value in all sub-arrays with same key/index (column)
    /* column 0 holds:
            array (
                0 => 'Service',
                1 => '8 mars 2017',
                2 => '08:00'
            ) */
    // then join them together using a space as glue
    // and push into the final array
    $result[]=implode(' ',array_column($array,$key));
}

/* result holds:
        array (
            0 => 'Service 8 mars 2017 08:00',
            1 => 'Service 22 mars 2017 08:00',
            2 => 'Service 5 april 2017 08:00'
        )

For anyone who prefers a compact (and nearly unreadable) function to call, here you go:

function davids_WP_workaround($string,$rows){
    $array=array_chunk(explode(', ',preg_replace('/(\d{1,2}\s\w+),(\s\d{4})/','$1$2',$string)),$rows); // group 9 elements into sets of 3 elements
    foreach(array_keys($array[0]) as $key){
        $result[]=implode(' ',array_column($array,$key));
    }
    return $result;
}

$string="Service, Service, Service, 8 mars, 2017, 22 mars, 2017, 5 april, 2017, 08:00, 08:00, 08:00";

echo "<pre>";
var_export(davids_WP_workaround($string,3));
echo "</pre>";