JS array to PHP


JS array to PHP

我有一个包含Javascript数组的字符串:

$array = "var Array = [
             { 'a' : 'val1', 'b': 1},
             { 'a' : 'val2', 'b': 2}
];";

如何在下一个结构中将此字符串转换为PHP数组:

$array[0] => array('a' => 'val1', 'b' => 1)
$array[1] => array('a' => 'val2', 'b' => 2)

谢谢

这将帮助:

例:

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>

上面的示例将输出:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}
array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

从这里。

你绝对应该考虑使用 json 在 php 和 js 之间交流代码。但是,我不知道你想用这段代码做什么,所以这是你想要的(作为一般规则,你不想使用它):

<?php
$str = 'var Array = [
             {"a": "val1", "b": 1},
             {"a": "val2", "b": 2}
];';
$matches = array();
preg_match("/^(var's+)*([A-Za-z0-9_'.]+)'s*='s*([^;]+);$/", $str, $matches);
print "<pre>";
var_dump($matches);
print "</pre>";
$array = json_decode($matches[3], true);
print "<pre>";
var_dump($array);
print "</pre>";
?>

另请注意,我必须用双引号替换单引号才能正常工作,我不知道为什么我必须这样做。

如果你说为什么需要这个,你可能会得到更多的帮助。

你应该为此使用 JSON。

请仔细看看我所做的差异,JSON 语法比 javascript 对象初始值设定项语法严格得多。

$array = '[
             { "a" : "val1", "b": 1},
             { "a" : "val2", "b": 2}
]';
$array = json_decode($array, true );
print_r($array);
/*
Array
(
    [0] => Array
        (
            [a] => val1
            [b] => 1
        )
    [1] => Array
        (
            [a] => val2
            [b] => 2
        )
)
*/