Это должно быть легко, так как это просто вопрос, что я неправильно понял синтаксис. Мне просто нужно объединить два массива при добавлении некоторых дополнительных символов к каждому значению массива …
Это была моя попытка:
$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 объединит только номер типа массива, а не строку. Возможно, вам потребуется сначала добавить дополнительные символы в качестве элемента в каждый массив, а затем выполнить 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));