2016-12-04 10 views
1
<?xml version="1.0" encoding="UTF-8"?> 
<TVchannel> 
    <month-name month="September"> 
     <channel-name name="IT"> 
      <title>Welcome to IT-TV</title> 
      <image-no-1></image-no-1> 
      <image-no-2></image-no-2> 
      <image-no-3></image-no-3> 
      <image-no-4></image-no-4> 
      <image-no-5></image-no-5> 
     </channel-name> 
     <channel-name name="PTG"> 
      <title>Welcome to PTG-TV</title> 
      <image-no-1></image-no-1> 
      <image-no-2></image-no-2> 
      <image-no-3></image-no-3> 
      <image-no-4></image-no-4> 
      <image-no-5></image-no-5> 
     </channel-name> 
     <channel-name name="HR"> 
      <title>Welcome to HR-TV</title> 
      <image-no-1></image-no-1> 
      <image-no-2></image-no-2> 
      <image-no-3></image-no-3> 
      <image-no-4></image-no-4> 
      <image-no-5></image-no-5> 
     </channel-name> 
    </month-name> 

    <month-name month="October"> 
     <channel-name name="IT"> 
      <title>Welcome to IT-TV</title> 
      <image-no-1></image-no-1> 
      <image-no-2></image-no-2> 
      <image-no-3></image-no-3> 
      <image-no-4></image-no-4> 
      <image-no-5></image-no-5> 
     </channel-name> 
     <channel-name name="PTG"> 
      <title>Welcome to PTG-TV</title> 
      <image-no-1></image-no-1> 
      <image-no-2></image-no-2> 
      <image-no-3></image-no-3> 
      <image-no-4></image-no-4> 
      <image-no-5></image-no-5> 
     </channel-name> 
     <channel-name name="HR"> 
      <title>Welcome to HR-TV</title> 
      <image-no-1></image-no-1> 
      <image-no-2></image-no-2> 
      <image-no-3></image-no-3> 
      <image-no-4></image-no-4> 
      <image-no-5></image-no-5> 
     </channel-name> 
    </month-name> 
</TVchannel> 

У меня есть файл данных XML выше. Я пытаюсь повторить заголовок в разделе channel-name = "HR". Итак, эхо должно быть «Добро пожаловать в HR-TV.Ошибка отображается объект SimpleXML

Это мой PHP код для выполнения этой

<?php 
    $picture_container = simplexml_load_file('data.xml'); 
    echo $picture_container->[month-name[0]]->[channel-name[1]]->title; 
?> 

Однако, когда я бегу это получаю эту ошибку Синтаксическая ошибка: синтаксическая ошибка, неожиданный «[», ожидая идентификатор (T_STRING) или переменной (T_VARIABLE) или '{' или '$' в C: \ wamp64 \ WWW \ РОС - ВГТО \ logic.php на линии 3

Просьба помочь

ответ

1

Есть много ошибок в этом:

1. месяц имя или имя канала не являются константами. Вы не можете использовать их в качестве констант, даже если они были константами, вы не можете использовать букву «-» при объявлении константы или переменной или любого метода или любой функции. (PHP Interpreter понимает это как минус.)

2. Если вы хотите получить доступ к сгенерированной недвижимости через -! или ключи, подобные этим, вы должны использовать синтаксис вроде этого:

$something->{'keyword-name'}

Таким образом, вы можете получить доступ к Simple XML сгенерированных свойства, как:

$picture_container->{'month-name'}[0]['channel_name'][1]->title;

-2

Просто попробуйте удалить -> оператора при использовании квадратных скобок wrappi нг. Аналогично выглядит следующим образом:

<?php 
    $picture_container = simplexml_load_file('data.xml'); 
    echo $picture_container["month-name"][0]["channel-name"][1]->title; 
?> 
1
echo $picture_container->{'month-name'}[0]->{'channel-name'}[1]->title->__toString(); 

Кстати, она должна быть {'channel-name'}[2] для 'Добро пожаловать в HR-ТВ' на выход.