2017-05-08 104 views
1

让我快速做到这一点。我有这个阵列:从数组中的对象获取阵列数据

$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 

我怎样才能访问它?最受赞赏的任何帮助。

这里是​​

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}]}'} 
+0

你能告诉一个'回声var_export($ newdata);'请 – RiggsFolly

+1

您的阵列的 '数据' 部分看起来像JSON,所以你需要['json_decode()'](https://开头的安全.php.net/manual/en/function.json-decode.php)它才可以使用它。 **但它是畸形的JSON!**。所以你不能解码它。 –

+0

这是一个格式不正确的JSON字符串。您无法轻松访问这些值。 – Pharaoh

回答

0

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

这应该给你一个想法:(此功能仅在您的更正数据中的第一个代码块的工作的其他例子仍然打破。)

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

0

这是因为你的字符串不是一个正确的json字符串。正确的方法是了解它为什么是错误的格式。 json解析请参考此post

这是一个解决方法。检查live demo

在此代码$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)); 
+0

所以修剪和strpos是必不可少的给与上面的JSON格式? –

+0

不,你的字符串不是json格式。我只是将你的非JSON转换成json。然后删除json字符串。你可以使用在线json检查工具来验证你的字符串是否是正确的json格式。 –