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

时间:2017-02-26 15:42:16

标签: php arrays grouping

回显数值的数组的最佳方法是什么:

CONCURRENT_REQUESTS = 1
DOWNLOAD_DELAY = 2

如果我想要结果:

服务,2017年2月27日08:00。

服务,2017年3月27日08:00。

服务,2017年4月27日08:00。

这是我到目前为止所提出的:

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

输出:

服务,服务,服务,

2017年8月8日,2017年2月22日,2017年4月5日,

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

所以他们仍然处于错误的顺序......我只是想弄清楚如何对数组进行排序并将我想要的值一个接一个地连续分组。

排序数组函数不适用于此。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

有很多方法可以给这只猫上皮。

我努力提供一个灵活的解决方案,您(或其他任何人)可以简单地修改您的字符串是否包含多于或少于3行的值

$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'
        )

对于喜欢紧凑(且几乎不可读)功能的人来说,请转到:

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>";