数组中的值,该数组位于另一个数组中

时间:2015-04-26 15:38:50

标签: php arrays json

如何找到阵列中的值,该数组在另一个数组中? 所以,我会为我的变量分配正确的值!

这是我的json文件:

    {
    "id": "number12345",
    "model": "324",
    "discount": [],
    "note": [],
    "quantity": "2",
    "addresses": [
        {
            "first": [
        {
           "type": "billing",
           "name": "Jo",
           "number": "01"
        },
        {
           "type": "shipping",
           "name": "Susuan",
           "number": "03"
        }
     ]
    },
  {
     "seconde": [
        {
           "type": "billing",
           "name": "Jony",
           "number": "02"
        },
        {
           "type": "shipping",
           "name": "Ladye",
           "number": "05"
        }
         ]
       }
    ]
    }

这是我想要得到的值的变量:

$firstTypeOne = 'billing';
$firstTypeTwo = 'shipping';

$firstNameOne = 'Jo';
$firstNameTwo = 'Susuan';

$firstNumberOne = '01';
$firstNumberTwo = '03';

我试过这个来找到值:

    ini_set('display_errors', 1);

    ini_set('log_errors', 1);

    $dataJson = "mydatafile.json";

    $dataJson = file_get_contents($dataJson);

    //var_dump(json_decode($dataJson));
    //echo '<BR>';
    //var_dump(json_decode($dataJson, true));

    $decodeDataJson = json_decode($dataJson);

    foreach ($decodeDataJson->addresses->first as $obj) //here is line 17 !!!!!!!!!!!!!!!!!!!!!!!! 
        {

            echo $firstTypeOne = $obj->type . '< br>' . $firstNameOne = $obj->name . '< br>' . $firstNameTwo = $obj->name;
        }

我有一些错误:这是错误消息: 注意:尝试在第17行的C:\ inetpub \ wwwroot \ test \ index.php中获取非对象的属性

警告:在第17行的C:\ inetpub \ wwwroot \ test \ index.php.php中为foreach()提供的参数无效

为什么我没有&#34;回声&#34;? 如何为变量分配正确的值?

祝你有个愉快的一天 感谢

2 个答案:

答案 0 :(得分:0)

你的json嵌套了多个级别。您需要两个循环来访问您正在寻找的变量。另外,由于内部元素的名称不同,因此您需要一种方法来获取该属性。试试这个:

foreach ($json->addresses as $obj) {
        foreach($obj->{key(get_object_vars($obj))} as $innerObject) {

            echo $firstTypeOne = $innerObject->type . '< br>' . $firstNameOne = $innerObject->name . '< br>' . $firstNameTwo = $innerObject->name;
        }
}

我希望有所帮助!还可以考虑使用在线json查看器,以便您可以轻松查看如何访问您正在寻找的属性。这就是我刚刚做的。 :)

答案 1 :(得分:-1)

@Chip Dean

我认为这不是必要的。因为您只需了解结构并直接获取它们即可。因此,如果他想在他的json中获取对象或数组的元素,他可以直接使用它,如果它不是空的!

正如我写的那样,他应该尝试var_dump

$decodeDataJson
$decodeDataJson->addresses
$decodeDataJson->addresses->first

在他获得循环之前,他应该添加

if(isset($variable))
{ 
foreach() ...

使用isset,他可以处理他的异常。