A->b->c
existieren könnte, aber c
möglicherweise nicht existiert. Wie kann ich das überprüfen?
Antworten
Zu viele Anzeigen?
Mike Chelen
Punkte
382
phse
Punkte
2508
Ich verwende eine Hilfsfunktion, um zu prüfen, ob ein Knoten ein gültiger Knoten ist, der als Parameter in einer Funktion bereitgestellt wird.
private static function isValidNode($node) {
return isset($node) && $node instanceof SimpleXMLElement && !empty($node);
}
Beispiel für die Verwendung:
public function getIdFromNode($node) {
if (!self::isValidNode($node)) {
return 0;
}
return (int)$node['id'];
}
user857276
Punkte
1369
g-man
Punkte
64
Pancho
Punkte
1760
Ich kann nicht für frühere Versionen sprechen, aber in PHP 8.0 wird die folgende einzeilige Funktion verwendet:
function elementExists(?SimpleXMLElement $element) : bool {
return is_null($element)?false:@count($element);
}
$A = new SimpleXMLElement('<A><b><c/></b></A>'); // doc contains c
$B = new SimpleXMLElement('<B><b/></B>'); // doc does not contain c
$C = new SimpleXMLElement('<C><x><c/></x></C>'); // doc contains c but different heirarchy
print '$A contains ->b->c : ' . (elementExists($A->b->c)?"true":"false") . PHP_EOL;
print '$B contains ->b->c : ' . (elementExists($B->b->c)?"true":"false") . PHP_EOL;
print '$C contains ->b->c : ' . (elementExists($C->b->c)?"true":"false") . PHP_EOL;
renvoie à
$A contains ->b->c : true
$B contains ->b->c : false
$C contains ->b->c : false
d.h. korrekt bestimmt, ob c vorhanden ist und sich an der gewünschten Stelle befindet.
1 Stimmen
Bitte wählen Sie eine neue Antwort