Php 使用不同结构的有效但已更改的json检查foreach中的错误
我从第三方web服务中提取数据,当api进行维护时,json文档不再具有相同的结构,但仍然是有效的json文档。因此,当我去解析时,我得到了一个错误:为foreach提供的无效参数是有意义的,但是我如何对此进行测试,然后调用一个单独的函数用json文档的内容记录错误 我尝试添加set\u error\u handlercustomError;这是可行的,但我不知道如何从error函数访问$response或$json的内容Php 使用不同结构的有效但已更改的json检查foreach中的错误,php,Php,我从第三方web服务中提取数据,当api进行维护时,json文档不再具有相同的结构,但仍然是有效的json文档。因此,当我去解析时,我得到了一个错误:为foreach提供的无效参数是有意义的,但是我如何对此进行测试,然后调用一个单独的函数用json文档的内容记录错误 我尝试添加set\u error\u handlercustomError;这是可行的,但我不知道如何从error函数访问$response或$json的内容 $response = file_get_contents($url);
$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是一个非常糟糕的主意;因为它可能会泄露敏感信息。有关更多说明,请参阅本文: