【问题标题】:Getting an object name within an object in PHP在 PHP 中获取对象中的对象名称
【发布时间】:2018-07-31 15:00:08
【问题描述】:

在 PHP 中,我了解到能够从一个对象中获取值就是这样:

$objResult->{"RESP"}->{"DATA"}->{"F_NAME"}

但是,对于以下数据,我如何才能获得名称“NO_1”? 既然是在一个数组里,我希望能把里面的数据提取出来,我在想先得到它的名字。

{   
    "SAMPLE": [
      {
        "NO_1": [
          {
            "RESULT": [
              {
                "NUMBER": 1,
                "F_NAME": "JOHN",
                "L_NAME": "SMITH"
                },
              {
                "NUMBER": 2,
                "F_NAME": "WILL",
                "L_NAME": "JONES"
                }
            ]
          }
        ]
      },
      {
        "NO_2": [
          {
            "RESULT": [
              {
                "NUMBER": 3,
                "F_NAME": "MARY",
                "L_NAME": "JANE"
                },
              {
                "NUMBER": 4,
                "F_NAME": "NEIL",
                "L_NAME": "STRONG"
                }
            ]
          }
        ]
      }
    ]
}

有什么想法吗?

【问题讨论】:

  • 您不需要特别使用{"STRING"} 格式。你可以使用$objResult->SAMPLE[0]->NO_1
  • "先得到它的名字"...你的意思是你不知道属性的名字,所以你需要得到那个对象中所有属性名的列表,它将包括“No_1”属性?是这个意思吗?
  • 您可以简单地遍历您的对象,如果这是您所要求的。例如,请参阅this answer。如果这不是您想要做的,您可能需要告诉我们您打算做什么的更多细节。
  • @ADyson - 是的。该对象将为您提供一个结构,但对于我提到的那个非常具体的点,您将获得一个可能会更改的名称。但不管它的名字如何,重要的是它的数据。
  • 您知道包含该属性的对象在“sample”数组中的位置吗?例如,它是否总是数组的第一个元素?这将是找到它的好方法。

标签: php json


【解决方案1】:

有两种方法可以得到这个。您可以访问直接索引或迭代循环以获取所有成员。下面是您可以在访问数组索引时应用错误处理检查的示例。

<?php
$json = '{   
    "SAMPLE": [
      {
        "NO_1": [
          {
            "RESULT": [
              {
                "NUMBER": 1,
                "F_NAME": "JOHN",
                "L_NAME": "SMITH"
                },
              {
                "NUMBER": 2,
                "F_NAME": "WILL",
                "L_NAME": "JONES"
                }
            ]
          }
        ]
      },
      {
        "NO_2": [
          {
            "RESULT": [
              {
                "NUMBER": 3,
                "F_NAME": "MARY",
                "L_NAME": "JANE"
                },
              {
                "NUMBER": 4,
                "F_NAME": "NEIL",
                "L_NAME": "STRONG"
                }
            ]
          }
        ]
      }
    ]
}';
$arr = json_decode($json,TRUE);
echo $arr['SAMPLE'][0]['NO_1'][0]['RESULT'][0]['F_NAME']; // Direct access
foreach ($arr as $key => $result){ // iterate in loop 
    foreach ($result as $key => $no) {
        foreach ($no['NO_1'] as $key => $res) {
            foreach ($res['RESULT'] as $key => $name) {
                echo $name['F_NAME'];
            }
        }
    }
}
die;
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多