Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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_Json_Object_Var Dump - Fatal编程技术网

Php 从数组中的对象获取数组数据

Php 从数组中的对象获取数组数据,php,arrays,json,object,var-dump,Php,Arrays,Json,Object,Var Dump,让我快点。我有这个阵列: $newdata = array(2) {[0] => array(1) {["data"] => string "{"A":2, "B":5, "C":[{"X":12, "Y":15},{"X":13, "Y":18}]}"} [1] => array(1) {["data"] => string "{"A":5, "B":2, "C":[{"X":11, "Y":17},{"X":18, "Y

让我快点。我有这个阵列:

$newdata = array(2)
    {[0] => array(1)
        {["data"] => string "{"A":2, "B":5, "C":[{"X":12, "Y":15},{"X":13, "Y":18}]}"}
    [1] => array(1)
        {["data"] => string "{"A":5, "B":2, "C":[{"X":11, "Y":17},{"X":18, "Y":14}]}"}}
如何访问其中的A、B、C、X和Y?我用var_dump()检查了它,结果是:

var_dump($newdata) is all of the array above
var_dump($newdata[0]) is the first array
这就是问题所在

我想打印第一个数组中的元素A,使用:

var_dump($newdata[0]["A"]) -> NULL
var_dump($newdata[0]->A) -> NULL
所以当我尝试在C中打印时:

var_dump($newdata[0]["A"][0]) -> NULL
var_dump($newdata[0]->A[0]) -> NULL
我怎样才能访问它?非常感谢您的帮助

这是
$newdata

array (
    0 => array ('data' => '{"A":2, "B":5, "C":[{"X":12, "Y":15],{"X":13, "Y":18}]}'),
    1 => array('data' => '{"A":5, "B":2, "C":[{"X":11, "Y":17],{"X":18, "Y":14}]}'}

这些是数组中的JSON字符串。你需要解码它们

这应该给你一个想法:

$data = json_decode($newdata[0]['data'], true);
var_dump($data);
var_dump($data['A']);

(这只适用于第一个代码块中已更正的数据。其他示例仍处于中断状态。)

这些是数组中的JSON字符串。你需要解码它们

这应该给你一个想法:

$data = json_decode($newdata[0]['data'], true);
var_dump($data);
var_dump($data['A']);

(这只适用于第一个代码块中已更正的数据。其他示例仍处于中断状态。)

这是因为您的字符串不是正确的json字符串。正确的方法是了解为什么格式错误。有关json解析,请参阅此

这里有一个变通办法。检查

在此代码中,
$string
是您的
$newdata[0]['data']

<?php
$string = '"{"A":2, "B":5, "C":[{"X":12, "Y":15],{"X":13, "Y":18}]}"';
$string = trim($string, '"');
$string[strpos($string, ']')] = '}';
print_r(json_decode($string, true));

这是因为您的字符串不是正确的json字符串。正确的方法是了解为什么格式错误。有关json解析,请参阅此

这里有一个变通办法。检查

在此代码中,
$string
是您的
$newdata[0]['data']

<?php
$string = '"{"A":2, "B":5, "C":[{"X":12, "Y":15],{"X":13, "Y":18}]}"';
$string = trim($string, '"');
$string[strpos($string, ']')] = '}';
print_r(json_decode($string, true));

能否显示
回声变量导出($newdata)
Please数组中的“数据”部分看起来像JSON,因此在使用它之前,需要对其进行修改。但它是格式错误的JSON!。所以你无法解码。这是一个格式错误的JSON字符串。您无法轻松访问这些值。请给我相应的数组,因为它的语法错误:语法错误,第5行的E:\wamp\www\test\index.php中出现意外的“{”;能否显示变量转储($newdata)能否显示
echo变量导出($newdata)
please数组中的“数据”部分看起来像JSON,因此在使用它之前需要对其进行修改。但它是格式错误的JSON!。因此无法对其进行解码。这是格式错误的JSON字符串。您无法轻松访问值。请给我相应的数组,因为它的语法错误:语法错误,意外'{在第5行的E:\wamp\www\test\index.php中;能否显示一个var_转储($newdata)因此,trim和strpos对于上面的JSON格式至关重要?不。您的字符串不是JSON格式。我只是将您的非JSON sting转换为JSON。然后对JSON字符串进行pare。您可以使用在线JSON检查工具验证您的字符串是否为正确的JSON格式。因此trim和strpos对于上面的JSON格式至关重要?不。您的字符串不是JSON fo我只是把你的非json字符串转换成json。然后对json字符串进行排序。你可以使用在线json检查工具来验证你的字符串是否为正确的json格式。