从数组中获取值

时间:2014-08-13 14:10:42

标签: php arrays

我知道这是一个新手问题,

我从javascript中提取了一些预格式化的json,看起来像这样:

[[[455837.99,2896882.36],[455862.44,2896888.35],[455868.79,2896860.14],[455864.3,2896852.78],[455845.76,2896848],[455837.99,2896882.36]]]

我尝试了在线格式化,向我显示数组看起来像这样:

Array
(
 [0] => Array
    (
        [0] => Array
            (
                [0] => 455837.99
                [1] => 2896882.36
            )

        [1] => Array
            (
                [0] => 455862.44
                [1] => 2896888.35
            )

        [2] => Array
            (
                [0] => 455868.79
                [1] => 2896860.14
            )

        [3] => Array
            (
                [0] => 455864.3
                [1] => 2896852.78
            )

        [4] => Array
            (
                [0] => 455845.76
                [1] => 2896848
            )

        [5] => Array
            (
                [0] => 455837.99
                [1] => 2896882.36
            )

    )

)

所有第三个[0]都是我需要的X,所以所有以455开头的所有[1]都是Y的。我希望这两个组合在一起,分别是X和Y.

我的问题是我不确定如何访问它们,我试过这个:

preg_match_all('/\[{3}.*\]{3}/', $data, $matches);
$arr=array();
foreach ($matches[0] as $match)
 {
   $arr[]=json_decode($match);
 }
 echo '<br>';
   $newmatch = json_decode($match);

我真的很感激,如果有人可以指出我能够拥有一个基本上回显X和Y值的循环,每当我尝试从数组中回应一些东西时我得到: 1)数组到字符串转换

我不确定这是因为三重括号,它是数组中数组的数组。

1 个答案:

答案 0 :(得分:0)

$data = "[[[455837.99,2896882.36],[455862.44,2896888.35],[455868.79,2896860.14],[455864.3,2896852.78],[455845.76,2896848],[455837.99,2896882.36]]]";

$data_array = json_decode($data);

if (is_array($data_array) && array_key_exists(0, $data_array)) {
    foreach ($data_array[0] as $element) {
        $x = array_key_exists(0, $element) ? $element[0] : "N/A";
        $y = array_key_exists(1, $element) ? $element[1] : "N/A";

        printf("X: %s | Y: %s\n", $x, $y);
    }
}