1

次の方法で 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)

ありがとう

4

3 に答える 3

6

これは役立ちます:

例 :

<?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)
}

ここから。

于 2012-07-07T11:14:01.180 に答える
2

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>";
?>

また、これを機能させるには、一重引用符を二重引用符に置き換える必要があったことに注意してください。なぜそうしなければならなかったのかわかりません。

なぜこれが必要なのかを言えば、もう少し助けが得られるかもしれません。

于 2012-07-07T11:28:15.730 に答える
0

これには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
        )

)

*/
于 2012-07-07T11:36:35.977 に答える