Почему я получаю эту ошибку: «Аргумент 1, передаваемый myFunction (), должен быть экземпляром SimpleXMLElement, с нулевым значением & quot ;?

Я продолжаю получать эту ошибку:

Argument 1 passed to myFunction() must be an instance of SimpleXMLElement, null given

Вот мой код:

function myFunction(SimpleXMLElement $order_status_response_element) {
// Get any invoices firstly.
$invoice_details_element_array = $order_status_response_element->xpath('//Detail/RefInfo/RefIDQual[text()="IN"]/parent::*/parent::*');
$invoice_numbers_element_array = $order_status_response_element->xpath('//Detail/RefInfo/RefIDQual[text()="IN"]/parent::RefInfo/RefID');
$non_invoice_details_element_array = $order_status_response_element->xpath('//Detail[not(RefInfo/RefIDQual[text()="IN"])]');
if(count($non_invoice_details_element_array) > 1) throw new Exception('More than one instance of non-invoiced details in array! Aborting!');
$non_invoice_details_element = $non_invoice_details_element_array[0];
echo("non_invoice_details_element is a SimpleXMLElement, true? ".is_a($non_invoice_details_element,'SimpleXMLElement')."\n");$non_invoice_detail = sXMLtoArray($non_invoice_details_element);
^^^ERROR HAPPENS HERE^^^
}

/**
* Return an array, given a SimpleXMLElement object.
*
* @param SimpleXMLElement $elem
* @return array
*/
function sXMLtoArray(SimpleXMLElement $elem) {
return json_decode(json_encode($elem),TRUE);
}

Теперь вывод, который я получаю, выглядит так:

non_invoice_details_element is a SimpleXMLElement, true? 1

Argument 1 passed to sXMLtoArray() must be an instance of SimpleXMLElement, null given, called in {path} on line 2033 and defined {paths}

Так что если is_a() говорит мне, что это действительно SimpleXMLElement, тогда почему он думает, что он нулевой, когда его передают в sXMLtoArray() функционировать? Если бы это не был SimpleXMLElement, тогда он все равно выдал бы исключение, потому что $ non_invoice_details_element_array был бы нулевой длины, так как xpath не существовал бы.

Какого черта здесь не так?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]