2017-05-08 107 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格式。 –