警告:来自多维数组的非法字符串偏移

时间:2015-01-03 12:08:48

标签: php arrays multidimensional-array

在下面的代码中,我尝试使用echo $r_id[$d_id]['name'];"在前一页中定义了$r_id = china$d_id = china1,以便复制echo $china['china1']['name'];,这将给出我从阵中获得了牛肉和西兰花的价值。

<?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>

1 个答案:

答案 0 :(得分:2)

您无法将变量直接传递到网址:<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