PHP:从二维关联数组访问数据

时间:2013-03-13 14:14:03

标签: php multidimensional-array get

我有一个页面,显示来自二维数组的项目列表,如下所示:

<?php 
    for ($row = 0; $row < $arrlength; $row++)
    {
       echo "<li>";
       echo "<a href='#item-info' >";              
       echo $items[$row]["Item"];
       echo "</a>"; 
       echo "</li>";
    }
?>

我希望能够让用户点击他们想要的项目的链接,然后将他们带到显示所有项目信息的页面。 我的数组看起来像这样:

$items = array( array(Item =>"Jeans",
                      Colour =>"Blue",
                      In stock =>"Yes"),

我一直在网上查看php教程,我相信我想在我的网址中使用GET方法#item-info但是我不太确定最好的方法是什么。

我想要这个的原因是因为我的数组包含近1000个项目,制作1000个项目信息页面将是一个很长的过程,所以我只想制作一个页面,它只显示一个单独的所有特定项目信息页。

提前谢谢你:)

2 个答案:

答案 0 :(得分:3)

您需要引用您的密钥:

$rooms = array(
    array(
        "Item" =>"Jeans",
        "Colour" =>"Blue",
        "In stock" =>"Yes"
    )
);

另外,我假设您在循环中访问的数组实际上称为$items,此处使用$rooms只是一个示例。

道歉,回答你的实际问题:你似乎想要一个书签标签。您可以使用以下内容构建它:

echo "<a href='" . $items[$row]["Item"] . "-" . $items[$row]["Colour"] . "'></a>";

然后,您可以在URL中使用书签哈希,以匹配您要链接到的任何书签。例如,要转到上面示例数组中的项目,您的书签哈希将是:#Jeans-Blue

答案 1 :(得分:0)

首先,您提供的当前数组返回:

  

解析错误:语法错误,意外“库存”(T_STRING),期待   ')'在第5行的C:\ xampp \ htdocs \ index.php

这是因为您没有将密钥作为字符串括起来。

$rooms = array( array(Item =>"Jeans",
                      Colour =>"Blue",
                      In stock =>"Yes")

应该是:

$rooms = array( array("Item" =>"Jeans",
                      "Colour" =>"Blue",
                      "In stock" =>"Yes")

另外,您还没有正确关闭数组,错过了结束);

所以结束数组应为:

$rooms = array( array("Item" =>"Jeans",
                      "Colour" =>"Blue",
                      "In stock" =>"Yes"));

以及如何访问如下:

执行print_r($rooms);返回:

Array ( [0] => Array ( [Item] => Jeans [Colour] => Blue [In stock] => Yes ) ) 

要访问单个数据,您需要搜索要搜索的内部数组的键:

所以

echo $rooms[0]['Item'];将打印:Jeans

访问我个人的整个阵列(我知道其他开发人员会有他们的方法,所以尊重他们)

Foreach ($rooms AS $Primary_Array)
{
   // this searches through your primary array 
   foreach ($Primary_Array AS $Room_Keys => $Room_Value)
   {
      // This searches through your secondary level array so you can return: 
     echo '<b>'.$Room_Keys.'</b>:'.$Room_Value.'<br>'; 
     /*
      with your array provided, you will have the following output:

     **Item**: Jeans
     **Colour**: Blue
     **Instock**: Yes
     */
   }
}