2015-01-03 4 views
0

В коде ниже я пытаюсь использовать echo $r_id[$d_id]['name'];" где $r_id = china и $d_id = china1 были определен в предыдущей странице, чтобы повторить echo $china['china1']['name'];, который даст мне значение Говядины и Брокколи из массива.Предупреждения: Illegal строка смещение, из многомерного массива

<?php 
$china = array(
'china1'=> array(
'cat'=> "Chinese", 
'id'=>"C1", 
'name'=>"Beef and Broccoli", 
'instruction'=> "Placeholder") 
); 

if(isset($_GET["r_id"])){ 
     if(isset($_GET["d_id"])){ 
      $r_id = $_GET["r_id"]; 
      $d_id = $_GET["d_id"]; 
     } 
    } 

    echo $r_id[$d_id]['name']; 

?> 

Но я получаю это:

Warning: Illegal string offset 'china1' in.... 

Warning: Illegal string offset 'name' in.... 

Откуда я это не так? Код предыдущей страницы:

 <table border = 1px align = center style = "margin-top:100px;"> 
     <tr> 
      <td><a href="recipes.php?r_id=china&d_id=china1"><img src="images/china1icon.jpg"/></a></td> 
      <td><img src="images/vietnam1icon.jpg"/></td> 
      <td><img src ="images/japan1icon.jpg"/></td> 
      <td><img src ="images/korea1icon.jpg"/></td> 
     </tr> 
    </table> 
+0

Вы уверены, что набор $ d_id установлен? Эта ошибка возникла бы, если $ r_id [$ d_id] не задан, т. Е. Ключа $ d_id не существует. Лучше предположить, что if (isset ($ _ GET ["r_id"])) обходит, потому что r_id не установлен. – ggdx

+0

@ dwhite.me Это было то, что я использовал на предыдущей странице: JayyJayy

ответ

2

Вы не можете передать переменную непосредственно в URL: <a href="recipes.php?r_id=$china&d_id=china1"></a>. Вы должны распечатать переменную в URL-адресе, например <a href="recipes.php?r_id=" . $china . "&d_id=china1"></a>, а затем она будет работать.

И на этой странице $r_id теперь 'china', если вы хотите, чтобы стать echo $r_id[$d_id]['name'];echo $china['china1']['name'];, то вам нужно сделать $$r_id[$d_id]['name'], обратите внимание на двойной знак доллара, который определяет variable variable.

+0

Здесь, похоже, не проблема, так как я получил сообщение об ошибке «Примечание: неопределенная переменная: $» поверх предыдущих 2 сообщений об ошибках , – JayyJayy

+0

Я раньше не читал ваших комментариев. См. Мой пересмотренный ответ. – d4nyll

Смежные вопросы