php中的foreach循环中的参数无效

时间:2018-05-21 03:27:07

标签: php

所以下面是我在PHP中解码它时的JSON结构,但由于某种原因,我很难循环遍历这个JSON对象。我不知道如何获得"事件","描述","技术"的每个值。从那些数组中保存它们在我的数据库中。

array(1) {
      ["Access"]=>
      array(2) {
        [0]=>
        array(3) {
          ["incident"]=>
          string(19) "sssssssssssssssssss"
          ["description"]=>
          string(10) "ssssssssss"
          ["technique"]=>
          string(19) "Link "
        }
        [1]=>
        array(3) {
          ["incident"]=>
          string(18) "ssssssssssssssssss"
          ["description"]=>
          string(0) ""
          ["technique"]=>
          string(19) "Link "
        }
      }
    }

到目前为止,我有这个PHP代码,但它在第一个foreach循环中返回了一个错误,指出了无效的参数。

$objectFirst =($_POST['Access1']);
$data = json_decode($objectFirst,true);

foreach ($data->Access as $tech){
    foreach($tech as $incident){
        foreach($incident as $ss){
            var_dump($ss->incident);
        }
    }
}

2 个答案:

答案 0 :(得分:2)

使用此表示法$data->Access访问元素时,表示您尝试访问$data对象的属性。但在您的情况下,$data是一个数组,因此您必须使用数组表示法。

因此应将其更正为$data['Access']。代码中的另一个问题是循环级别。

foreach ($data->Access as $tech){
    foreach($tech as $incident){
        foreach($incident as $ss){
            var_dump($ss->incident);
        }
    }
}

最内层循环不正确,因为$ incident将包含一个字符串,而不是一个数组。当您尝试访问$ss['incident']时,它将失败。所以只需将其更改为:

foreach ($data['Access'] as $tech){
    foreach($tech as $incident){
        var_dump($incident);
    }
}

希望它有所帮助!

答案 1 :(得分:1)

<?php

$data = [
    'access' =>
    [
        [
            'foo' => 'I',
            'bar' => 'got'
        ],
        [
            'foo' => 'a',
            'bar' => 'big'
        ]
    ]
];

foreach($data['access'] as $array)
    var_dump($array['foo'], $array['bar']);

输出:

string(1) "I"
string(3) "got"
string(1) "a"
string(3) "big"