2013-06-28 4 views
-4

Я хотел бы преобразовать массив строк какПреобразовать массив строк в массив

[["a","b",["c1","c2"]],"d",["e1","e2"]] 

в массив в PHP.

Есть ли способ сделать это?

+0

массив строк? что вам нужно в результате? ["a", "b", "c1", "c2", "d", "e1", "e2"]? –

+0

Это, скорее всего, дубликат http://stackoverflow.com/questions/526556/how-to-flatten-a-multi-dimensional-array-to-simple-one-in-php – MadDogMcNamara

+0

Я не понимаю нисходящие , Вопрос заключается в интересной проблеме разбора строк для создания вложенных массивов в памяти. Я новичок в SO, но я предполагаю, что люди просто не поняли вопроса. – Racso

ответ

4

Строка предоставления действительна JSON - таким образом, json_decode может использоваться, чтобы превратить ее в реальный (PHP) массив.

Взятые почти непосредственно из документации (только строка была изменена):

$json = '[["a","b",["c1","c2"]],"d",["e1","e2"]]'; 
var_dump(json_decode($json)); 

Для этого случая значительно чище и безопаснее, чем пытаться взломать его с другими кодовыми оценщиками (т.е. eval) и проще, чем писать пользовательский код синтаксического анализа.

+1

Почему 'eval' в вашем ответе? 'eval' никогда не будет правильным ответом. – Halcyon

+1

@FritsvanCampen Я думаю, что eval заслуживает упоминания именно потому, что он использовался для подобных задач (этот вопрос не был первоначально помечен json). Я обновил формулировку, чтобы попытаться сделать ее более очевидной. Также обратите внимание, что нет ссылки на 'eval'. – user2246674

0

Возможный дубликат How to "flatten" a multi-dimensional array to simple one in PHP? и How to Flatten a Multidimensional Array?

Самый простой/ценное решение для меня

function flatten(array $array) { 
    $return = array(); 
    array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; }); 
    return $return; 
} 
+1

Я думаю, что тег [json] означает, что это строка, которая нуждается в синтаксическом анализе как JSON - но это трудно сказать. – Ryan

+0

Возможно, вы правы. Я оставлю это здесь, если это наоборот. (Скорее всего, –