I’m trying to use isset
to check if the $filtered_data
returns a set of data.
I’m using this code rather than foreach
because datasetID is a unique id.
My novice understanding is that if (isset($filtered_data))
returns true or false? So the if
mrans that if records are returned do x
. So, currently when I put in $lastPart = '5fd4058e5c8d2'
I’m getting the expected result. When I change the 2 to a 3 (a non-existing ID) $lastPart = '5fd4058e5c8d3'
I get Undefined index: 5fd4058e5c8d3`.
I expect the isset
is doing its job and the error is thrown on this line as indicated in the error message $filtered_data = array_column(array_merge(...$data), null, 'datasetID')[$lastPart];
am I missing the obvious? I guess this needs a get out clause if the value $lastPart
does not exist in the array?
$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';
}
Advertisement
Answer
A quick fix would be to use null coalescing (??
) and setting the value to a dummy value if not found, then your isset()
can be reworked to check for the dummy value…
$filtered_data = array_column(array_merge($data), null, 'datasetID')[$lastPart]
?? null;
if ($filtered_data){