【问题标题】:Get An Array Data From Object In Array从数组中的对象获取数组数据
【发布时间】:2017-10-06 04:24:57
【问题描述】:

让我快点。我有这个数组:

$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中的var_export()

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

【问题讨论】:

  • 请给我echo var_export($newdata);好吗
  • 数组的“数据”部分看起来像 JSON,因此您需要先json_decode() 才能使用它。 但它是格式错误的 JSON!。所以你无法解码它。
  • 这是一个格式错误的 JSON 字符串。您无法轻松访问这些值。
  • 请给我正确的数组,因为它显示解析错误:语法错误,第 5 行 E:\wamp\www\test\index.php 中的意外 '{';
  • 你能显示一个 var_dump($newdata)

标签: php arrays json object var-dump


【解决方案1】:

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

这应该会给你一个想法:

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

(这只适用于您在第一个代码块中更正的数据。其他示例仍然存在问题。)

【讨论】:

    【解决方案2】:

    这是因为你的字符串不是正确的 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));
    

    【讨论】:

    • 所以 trim 和 strpos 对于上面的 JSON 格式是必不可少的?
    • 没有。你的字符串不是json格式。我只是将您的非 json 刺痛转换为 json。然后削掉json字符串。您可以使用在线 json 检查工具来验证您的字符串是否是正确的 json 格式。
    猜你喜欢
    • 2018-01-24
    • 2021-09-14
    • 2014-05-04
    • 2016-01-13
    • 1970-01-01
    • 2017-08-05
    • 2020-07-16
    • 2019-01-06
    • 2013-04-09
    相关资源
    最近更新 更多