PHP Разделение и объединение - PullRequest
0 голосов
/ 21 февраля 2020

например, у меня есть строка, подобная этой:

$string = 'eat|drink today|tomorrow';

сверху строка Я хочу получить результат

eat today, eat tomorrow, drink today, drink tomorrow,

что мне делать? Я пытаюсь со сплитом, но не очень хороший результат. спасибо.

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Один из способов заключается в использовании взрыва и взрыва, и, как мы явно здесь (вы знаете значения и размер), это будет работать. Может быть, более быстрый способ с помощью регулярного выражения мгновенно разделить первую строку, но это было решение, которое пришло в голову на первый взгляд.

$string = 'eat|drink today|tomorrow';

// First split the string by the space between them, then by the pipe in separate arrays.
$removedSpace = explode(' ', $string);

// The action items.
$actions = explode('|', $removedSpace[0]);
// The periods/time of day items.
$dayPeriods = explode('|', $removedSpace[1]);

$final = [];

// Loop through actions and for each day period, generate the string.
foreach ($actions as $action) {
    foreach ($dayPeriods as $dayPeriod) {
        $final[] = $action . ' ' . $dayPeriod;
    }
}

$finalString = implode(', ', $final); // Your desired result in string format without last comma.

[ПРАВИТЬ] Я писал свой ответ, пока первый ответ был опубликован. Не стесняйтесь удалить это. [/ EDIT]

1 голос
/ 21 февраля 2020

Вы можете использовать взорвать несколько раз:

$string = 'eat|drink today|tomorrow';

$tmp = explode(' ',$string);        // eat|drink today|tomorrow  => [eat|drink, today|tomorrow]
$tmp1 = explode('|',$tmp[0]);       // eat|drink                => [eat, drink]
$tmp2 = explode('|',$tmp[1]);       // today|tomorrow           => [today, tomorrow]

foreach($tmp1 as $eat){
    foreach($tmp2 as $today){
        echo "$eat $today, ";
    }
}

Демо

Выход:

eat today, eat tomorrow, drink today, drink tomorrow, 
...