添加字符串的合并数组

Merged arrays with added string

这道题应该很简单,因为这显然只是一道语法错误的题。我只需要合并两个数组,同时向每个数组值添加一些额外的字符...

这是我的尝试:

$time = array_merge($hour, ':', $minute, ':00');

...这是行不通的。输出应该是例如: 20:00:00 22:00:00 24:00:00 等等

我可以看到两种组合两个数组的可能性。

选项 1 是组合每个数组中的相应项目...

$hour = [20,22,24];
$minute = [0,10,20];

$out = [];
foreach ( $hour as $key => $hr )    {
    $out[] = $hr. ':'. str_pad( $minute[$key], 2, '0', STR_PAD_LEFT). ':00';
}
print_r($out);

给出...

Array
(
    [0] => 20:00:00
    [1] => 22:10:00
    [2] => 24:20:00
)

选项 2 是结合所有可能性...

$out = [];
foreach ( $hour as $hr )    {
    foreach ( $minute as $mnt ){
        $out[] = $hr. ':'. str_pad( $mnt, 2, '0', STR_PAD_LEFT). ':00';
    }
}
print_r($out);

给出...

Array
(
    [0] => 20:00:00
    [1] => 20:10:00
    [2] => 20:20:00
    [3] => 22:00:00
    [4] => 22:10:00
    [5] => 22:20:00
    [6] => 24:00:00
    [7] => 24:10:00
    [8] => 24:20:00
)

因为它们都是整数,所以我在分钟上使用 str_pad() 以确保它始终是 2 位数字。如果需要,您可以对时间做同样的事情。

array_merge 将仅合并 n 个数组类型而不是字符串。您可能需要首先在每个数组中添加额外的字符作为项目,然后执行 array_merge.

例如

array_push($hour, ":");
array_push($minute, ":00");
$time = array_merge($hour, $minute);

但是,输出表明您正在寻找 array_map 而不是 array_merge。

$time = array_map(function($a, $b) { return $a . ':' . $b . ':00'; }, $hour, $minute));