PHP字符串表示为数组到数组

PHP字符串表示为数组到数组

问题描述:

$var = "['test', 'test2', 'test3']";

how do I create a workable array from this in PHP?

I've tried explode($var, ","); but this didn't seem to work, unless something went wrong with that attempt.

  $ var =“['test','test2','test3']”; 
   code>  pre> 
 
 

如何在PHP中创建一个可行的数组? p>

我试过爆炸($ var,“,” ); 但这似乎不起作用,除非该尝试出现问题。 p> div>

explode($var, ","); is wrong. explode needs the first argument to be the delimiter and the second be the string. Replace [] and then explode -

$var = "['test', 'test2', 'test3']";

$var = str_replace(array('[', ']'), '', $var);
$arr = explode(',', $var);

 [akshay@localhost tmp]$ cat test.php
 <?php 
 $var = "['test', 'test2', 'test3']";
 print_r(  json_decode(str_replace("'","\"",$var)) );
 ?>

Output

 [akshay@localhost tmp]$ php test.php
 Array
 (
     [0] => test
     [1] => test2
     [2] => test3
 )

There is an eval() function in PHP which converts string into PHP statements. The string has to be valid PHP statement.

In your case "['test', 'test2', 'test3']"; is not valid statement. You can use something similar to below syntax. Please note that the $x is in single quotes as $x in double quotes will return the value.

$var = "['test', 'test2', 'test3'];"; eval('$x = ' . $var); print_r($x);

I would say that it looks like a job for json_decode, but its not valid json... There is a way to make it valid however:

How to json_decode invalid JSON with apostrophe instead of quotation mark