Объединенные массивы с добавленной строкой - PullRequest
0 голосов
/ 24 ноября 2018

Это должно быть легко, так как это просто вопрос моего неправильного синтаксиса.Мне просто нужно объединить два массива при добавлении некоторых дополнительных символов к каждому значению массива ...

Это была моя попытка:

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

..., которая не работает.Выходные данные должны быть, например: 20:00:00 22:00:00 24:00:00 и т. Д.

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

array_merge объединит только номер типа массива, а не строку.Возможно, вам придется сначала добавить дополнительные символы в качестве элемента в каждый массив, а затем выполнить 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));
0 голосов
/ 24 ноября 2018

Есть две возможности для объединения обоих массивов.

Вариант 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 цифры.Вы можете сделать то же самое с часами, если вам нужно.

...