在变量中插入一个变量,该变量包含数组键和值[关闭]

My variable which retrieve from database is:

$MyVariable="1=>'raju',2=>'rana',3=>'keya',4=>'muaz',5=>'',6=>'Asif'";

My array will be:

$MyArray=array($MyVariable);

Now I want to print a value using a key. Like:

echo $MyArray[2];

My output should be:

rana

But output is nothing!

eval() has security implications, but that's how this string of partial crap is turned into an actual array:

eval('$MyArray = array('.$MyVariable.');');
print_r($MyArray);

You should really store each value as a related row in another table instead of array data.

Your variable $myVariable is a string consisting of array keys.

If you were to write it as an array, it would work without problems:

$myvariable = array(
1 => 'raju',
2 => 'rana',
3 => 'keya'
// More entries
);

If this is the output of a function, you may want to make that function output JSON instead, as that is parseable to an array with just one json_decode call.

If you still want to parse this, you'll have to do some more advanced string parsing:

$data = array();
$bits = preg_match_callback("/(\d+)=>'(.*?)'(\,)?/", function($matches) use ($data){
    $data[$matches[1]] = $matches[2];
}, $MyVariable);