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){