VerbAlexVlad
@VerbAlexVlad
Программист-любитель

Как разбить строку на массив?

Добрый день!
Подскажите пож-та, как правильно разбить строку
S - 64см. S - 64см. M - 64,4см. L - 64,8см. L - 64,8см.

на массив типа:
array {
    [0] => {
        'size' => 'S',
        'value' => '64',
    }
    [1] => {
        'size' => 'M',
        'value' => '64.4',
    }
    [2] => {
        'size' => 'L',
        'value' => '64.8',
    }
}

Учетом того, что данные повторяются.
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
0xD34F
@0xD34F
preg_match_all('/[A-Z]+ - \d+(,\d+)?/', $str, $matches);
$data = array_map(function($n) {
  $d = explode(' - ', $n);
  return [
    'size' => $d[0],
    'value' => $d[1]
  ];
}, array_unique($matches[0]));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@akamap
на конкурс корявости
$string = "S - 64см. S - 64см. M - 64,4см. L - 64,8см. L - 64,8см.";

$a = array_map(function ($item) {
    $t = explode('-', trim($item));
    return [$t[0], (float)str_replace(',', '.', $t[1])];
}, explode('. ', $string));

print_r($a);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы