2014-11-21 2 views
0

Я пытаюсь манипулировать $array:Implode/Explode PHP массив

Array ([0] => General [1] => Custom Title) 

Использование лопаются, я могу получить $array на отдельные куски, разделенными пробелом:

<?php $pieces = implode(" ", $array); ?> 

Выход:

General Custom Title 

Однако, если части массива представляют собой два слова, это не работает, поскольку я бы предпочел, чтобы t он должен быть:

General Custom-Title 

Любые идеи?

+0

Что именно вы имеете в виду? Вы можете просто сделать «str_replace» на дефис и заменить его на «». – androidavid

+0

Сначала перебираем массив и меняем места с тире. Затем используйте implode. –

+0

вы не можете избежать разделителей с помощью implode. Он имеет очень простую реализацию. Сделайте это вручную. –

ответ

2

Заменить пробелы дефисом, прежде чем взорваться.

foreach ($arr as $idx => $val) { 
    $arr[$idx] = str_replace(" ", "-", $val); 
} 
$pieces = implode(" ", $arr); 
+1

Использование 'array_map()' след должен быть ниже, чем с 'foreach()' – RichardBernards

1

Для этого вам нужно использовать некоторые функции манипуляции строкой. Предлагаю комбинацию str_replace либо array_walk (или array_map), либо простой цикл foreach.

1
<?php 
foreach ($myArray as $key => $value) { 
    $myArray[$key] = str_replace(' ' , '-', $value); 
} 
$output = implode(' ', $myArray); 
?> 
0
$x = array('Hallo X', 'Hallo Y'); 

echo implode(' ', (array_map(function($e) { return str_replace(' ', '-', $e); }, $x))); 
0

Один лайнер. Недостаток в том, что у вас может быть %% в элементах вашего массива, но я в этом сомневаюсь.

$pieces = str_replace('%%', ' ', str_replace(' ', '-', implode('%%', $array)));

Смежные вопросы