我知道这是一个新手问题,
我从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)数组到字符串转换
我不确定这是因为三重括号,它是数组中数组的数组。
答案 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);
}
}