Intereting Posts
Поставщик Oauth за обратным прокси Неверно сформированное числовое значение как я раунд в php с сохранением двух нулей Получение ошибки «Авторизованный токен от поставщика услуг не соответствует предоставленным сведениям о токенах запроса» в трехзначной аутентификации в google api Как отобразить результаты поиска в WordPress? Почему php не жалуется при ссылке на несуществующую переменную? Symlinked MAMP Folder Causeing 403 Запрещено добавьте две или более строки времени в php AWS: политика пользователя IAM для SES не работает Пользователь не распознается через Parse \ ParseUser, но существует в $ _SESSION Вложение PHPMailer, делая это без физического файла mysql_connect возвращает «Не удается подключиться к локальному серверу MySQL через сокет» при удаленном соединении с хостом? Плагин формы jQuery: XMLHttpRequest не может загрузить http: // www … No 'Access-Control-Allow-Origin' Ошибка YII CGridView Ошибка записанного аудиофайла в ActionScript

PHP – доступ к первому индексу массива функции SimpleXML :: xpath

Я использую SimpleXML для получения элемента XML-объекта, указанного именем тега и атрибутом … следующим образом:

$result = $xml->xpath('Stat[@Type="Venue"]'); $venue = $result[0]; 

Это прекрасно работает.

Однако … следующее сокращение дает мне ошибку

 $venue = $xml->xpath('Stat[@Type="Venue"]')[0]; PHP Parse error: syntax error, unexpected '[' in /var/www/handler.php on line 10 

Я должен быть глупым … но я не могу понять этого.

Вы не можете использовать такой массив. Вам нужно передать его переменной как таковой

 $venue = $xml->xpath('Stat[@Type="Venue"]'); echo $venue[0]; 

Я думаю, что в PHP 5.4 у вас будет возможность доступа к массиву из объектов, но не цитируйте меня на этом.

Изменить: Извините, я скопировал и вставил код из OP. [0] выскользнул из моего радара!

Новые возможности PHP 5.4.0

Добавлена ​​функция разыменования функциональных массивов, например foo () [0].

Используйте PHP 5.4.0 или новее.

Хорошо, есть несколько способов сделать это, кроме того, как предложил Эли . Первым и самым простым для вас было бы использование current (). Я нашел это в подобном сообщении здесь , поэтому я не могу взять кредит за это 🙂

 $vanue = current(($xml->xpath('Stat[@Type="Venue"]'))); 

Второе решение – использовать запрос XPATH. Единственная причина использовать запрос по xpath – это если вам нужно оценить выражение. Все, что я могу найти, говорит, что это также должно работать для вас, но, как я уже сказал, не является необходимым и даже не может работать с вашей версией PHP. Я знаю, что это не с моей, поэтому, очевидно, я не смог ее протестировать.

 $doc = new DOMDocument; $doc->Load($file); $xpath = new DOMXPath($doc); $query = 'Stat[@Type="Venue"]'; $venue = $xpath->query($query)->item(0);