2014-01-06 8 views
0

В приложении, которое я создаю, я хотел бы создать массив, используя содержимое, которое у меня есть в переменной. Это мой код:Содержимое массива PHP из переменной

$cont = '"q","w","e","r","t",'; 
$num = array(eval($cont)); 
foreach ($num as $v) { 
    echo "" . $v . "<br>OK<br><br>"; 
} 

Он ничего не возвращает. Я попробовал это с помощью eval и без того, Что я делаю неправильно?

+0

Этот код не имеет никакого смысла –

+0

http://php.net/explode PS: вместо разработки пользовательских алгоритмов сериализации имеет смысл проверить json в вместо него. – zerkms

+1

Вы не можете 'eval' случайное полуформированное выражение. Он должен быть действительным PHP. –

ответ

1

Угадайте, что вы ищете После explode():

$cont = '"q","w","e","r","t","y"'; 
$num = explode(',',$cont); 
foreach ($num as $v) { 
    echo "" . $v . "<br>OK<br><br>"; 
} 

выходы

"q" 
OK 

"w" 
OK 
.. 
+1

Если в строке есть запятая, она будет печатать только «ОК» последним. Для этого вы можете использовать функцию array_filter() для фильтрации нулевых значений. – Kashyap

0

eval зло, most of time. Вы можете использовать preg_match_all вместо:

$cont = '"q","w","e","r","t",'; 
preg_match_all("/\"([^\"]+)\"/", $cont, $matches); 
$num = $matches[1]; 
foreach ($num as $v) { 
    echo "$v<br>OK<br><br>"; 
} 

Или просто создать массив:

$num = array("q","w","e","r","t"); 
foreach ($num as $v) { 
    echo "$v<br>OK<br><br>"; 
} 

Но если все эти предупреждения и альтернативы не достаточно для вас, и вы настаиваете на использовании eval, попробуйте это:

$cont = '"q","w","e","r","t",'; 
eval("\$num = array($cont);"); 
foreach ($num as $v) { 
    echo "$v<br>OK<br><br>"; 
} 
Смежные вопросы