Объединенные массивы с добавленной строкой

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

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

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

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

0

Решение

Я вижу две возможности объединения обоих массивов.

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

1

Другие решения

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));
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector