Я пытаюсь манипулировать $array:
Array ([0] => General [1] => Custom Title)
Используя Implode, я могу получить $array
в отдельные части, разделенные пробелом:
<?php $pieces = implode(" ", $array); ?>
Вывод:
General Custom Title
Однако, если части массива представляют собой два слова, это не работает, поскольку я бы предпочел, чтобы выход был следующим:
General Custom-Title
Есть идеи?
Заменяйте пробелы дефисом, прежде чем взорвать.
foreach ($arr as $idx => $val) {
$arr[$idx] = str_replace(" ", "-", $val);
}
$pieces = implode(" ", $arr);
array_map()
след должен быть меньше, чем у foreach()
Для этого вам нужно использовать некоторую функцию манипуляции с строкой. Я предлагаю комбинацию str_replace
с помощью array_walk
(или array_map
) или простого цикла foreach
.
<?php
foreach ($myArray as $key => $value) {
$myArray[$key] = str_replace(' ' , '-', $value);
}
$output = implode(' ', $myArray);
?>
$x = array('Hallo X', 'Hallo Y');
echo implode(' ', (array_map(function($e) { return str_replace(' ', '-', $e); }, $x)));
Один вкладыш. Недостаток в том, что у вас может быть %% в элементах вашего массива, но я в этом сомневаюсь.
$pieces = str_replace('%%', ' ', str_replace(' ', '-', implode('%%', $array)));
str_replace
наstr_replace
и заменить его на ''.