Php 使用不同结构的有效但已更改的json检查foreach中的错误

Php 使用不同结构的有效但已更改的json检查foreach中的错误,php,Php,我从第三方web服务中提取数据,当api进行维护时,json文档不再具有相同的结构,但仍然是有效的json文档。因此,当我去解析时,我得到了一个错误:为foreach提供的无效参数是有意义的,但是我如何对此进行测试,然后调用一个单独的函数用json文档的内容记录错误 我尝试添加set\u error\u handlercustomError;这是可行的,但我不知道如何从error函数访问$response或$json的内容 $response = file_get_contents($url);

我从第三方web服务中提取数据,当api进行维护时,json文档不再具有相同的结构,但仍然是有效的json文档。因此,当我去解析时,我得到了一个错误:为foreach提供的无效参数是有意义的,但是我如何对此进行测试,然后调用一个单独的函数用json文档的内容记录错误

我尝试添加set\u error\u handlercustomError;这是可行的,但我不知道如何从error函数访问$response或$json的内容

$response = file_get_contents($url);
$json = json_decode($response, TRUE);

foreach($json['workers'] as $item) {
    echo $item['address']; //address does not exist when in maintenance mode!
}

function customError($errno, $errstr) {
    $link=Connection();
    echo "<b>Error:</b> [$errno] $errstr ";
    $sql="Insert into myErrors (response, description) values ('".$response."','.$errstr.');";
    //echo $sql;
    $result = mysqli_query( $link,$sql) or die('Error; ' . mysqli_error($link));
  }

在尝试循环之前,先测试结果以查看数组是否存在

$response = file_get_contents($url);
$json = json_decode($response, TRUE);

if (isset($json['workers'])) {
    foreach($json['workers'] as $item) {
            echo $item['address']; //address does not exist when in maintenance mode!
    }
} else {
    // insert something into myErrors table
}
检查foreachecho$响应之前是否存在$json['workers'];如果结果不明显,则显示结果使用diemysqli_error$conn是一个非常糟糕的主意;因为它可能会泄露敏感信息。有关更多说明,请参阅本文: