Имеется такая строка:
$str = "(1, 'a', 2, '', ''),
(2, 'b, d', 2, '', ''),
(4, 'c', 2, '', ''),"
Нужно ее преобразовать в правильный массив в виде:
$str = array(
array(1, 'a', 2, '', ''),
array(2, 'b, d', 2, '', ''),
array(4, 'c', 2, '', '')
);
echo $str[1][1]; // b, d
Как такое реализовать на PHP и чтобы можно было обращаться к нужному значению ?
Если ваша постановка вопроса правильная, то превращаем в валидный json и распаковываем
$res = json_decode('['. str_replace(['(',')',"'"],['[',']','"'],trim($str,',')) .']');
print_r($res);
Array (
[0] => Array (
[0] => 1
[1] => a
[2] => 2
[3] =>
[4] =>
)
[1] => Array (
[0] => 2
[1] => b, d
[2] => 2
[3] =>
[4] =>
)
[2] => Array (
[0] => 4
[1] => c
[2] => 2
[3] =>
[4] =>
)
)
Не любитель велосипедов, но если решать в лоб, то так:
$str = "(1, 'a', 2, '', ''),
(2, 'b, d', 2, '', ''),
(4, 'c', 2, '', ''),";
eval('$data = array('.str_replace('(', 'array(', $str).');');
echo $data[1][1]; // b, d
Сборка персонального компьютера от Artline: умный выбор для современных пользователей