我正在尝试使用isset
来检查$filtered_data
是否返回一组数据。
我使用这个代码而不是foreach
,因为datasetID是一个唯一的id。
我的新手理解是if (isset($filtered_data))
返回true还是false?因此,if
mran表示如果返回记录,则执行x
。所以,目前当我输入$lastPart = '5fd4058e5c8d2'
时,我得到了预期的结果。当我将2更改为3(不存在的ID($lastPart = '5fd4058e5c8d3'
时,我得到未定义的索引:5fd4058e5c8d3`。
我希望isset
正在完成它的工作,并且错误被抛出到这一行,如错误消息$filtered_data = array_column(array_merge(...$data), null, 'datasetID')[$lastPart];
所示。我是否错过了显而易见的内容?如果数组中不存在值$lastPart
,我想这需要一个get out子句?
$filtered_data = array_column(array_merge(...$data), null, 'datasetID')[$lastPart];
if (isset($filtered_data)){
echo 'qwertyuio';
$datasetID = $filtered_data['datasetID'];
$collectionCode = $filtered_data['collectionCode'];
$datasetName = $filtered_data['datasetName'];
$ownerInstitutionCode = $filtered_data['ownerInstitutionCode'];
$vernacularName = $filtered_data['vernacularName'];
$elementName = strtolower($filtered_data['elementName']);
} else {
echo 'not set';
}
一个快速解决方案是使用null合并(??
(并将值设置为伪值,如果找不到,则可以重新处理isset()
以检查伪值。。。
$filtered_data = array_column(array_merge(...$data), null, 'datasetID')[$lastPart]
?? null;
if ($filtered_data){
您忽略了一个显而易见的问题:当您将一个不存在的元素分配给$filtered_data
时,您正试图访问它,因此错误发生在那里。直到下一行,你才开始测试它的存在。
试试这个:
$filtered_data = array_column(array_merge(...$data), null, 'datasetID');
if (isset($filtered_data[$lastPart]) {
$filtered_data = $filtered_data[$lastPart];
echo 'qwertyuio';
$datasetID = $filtered_data['datasetID'];
$collectionCode = $filtered_data['collectionCode'];
$datasetName = $filtered_data['datasetName'];
$ownerInstitutionCode = $filtered_data['ownerInstitutionCode'];
$vernacularName = $filtered_data['vernacularName'];
$elementName = strtolower($filtered_data['elementName']);
} else {
echo 'not set';
}