Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数组中获取值_Php_Arrays - Fatal编程技术网

Php 从数组中获取值

Php 从数组中获取值,php,arrays,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

我知道这是个新手问题

我从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);
preg\u match\u all('/\[{3}.*\]{3}/',$data,$matches);
$arr=array();
foreach($matches[0]为$match)
{
$arr[]=json_解码($match);
}
回声“
”; $newmatch=json_解码($match);
如果有人能给我指出一个方向,让我能够得到一个基本上是X和Y值的循环,我会非常感激,无论我何时尝试从我得到的数组中回送一些东西: 1) 数组到字符串的转换


我不确定这是否是因为三个方括号,这是一个数组中的一个数组中的一个数组。

你这样做完全错了。它是json。您不会使用字符串操作从中提取数据。您可以使用
json\u decode()
,从中可以得到一个完全正常的PHP数组。@MarcB我不是想从中提取数据,我想告诉您,我刮取了一个json字符串,我正试图访问该数组,但我不确定如何访问它-因为它的结构。因此它在RegExp中被刮取,然后成为一个数组,这就是为什么我认为我需要对它进行两次解码?您先解码主字符串,然后使用
$arr[0]
$arr[1]
,等等。。。为了得到那些子阵列。永远不要像现在这样弄乱json字符串。获取损坏的json太容易了。
$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);
    }
}