【问题标题】:PHP: Access data from a two dimensional associative array [closed]PHP:从二维关联数组访问数据[关闭]
【发布时间】:2013-03-13 14:14:03
【问题描述】:

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

<?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 教程,我相信我应该在我的 url 中使用 GET 方法,#item-info 是,但我不太确定最好的方法是什么。

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

提前谢谢你:)

【问题讨论】:

  • 你需要根据$items[$row]的当前值来构建你的链接。你能添加你的网址应该是什么样子以及$items[$row]的完整值吗?
  • 我相信我希望它看起来像这样 mysite.com/fyp/index.php#item-info?iteminfo=jeans

标签: php multidimensional-array get


【解决方案1】:

您需要引用您的密钥:

$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

【讨论】:

  • 到目前为止,我的代码似乎与我的项目列表 for 循环一起工作。真的有必要吗?
  • 对不起,我回答了你的标题,而不是你的实际问题。我试图在后续编辑中回答主要问题。
【解决方案2】:

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

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

这是因为您没有将密钥封装为字符串。

$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
     */
   }
}

【讨论】:

  • 我知道右括号被遗漏了。显然我并不想复制整个数组。我知道如何简单地打印一条数据。我想要实现的是当用户单击列表中的项目时,它将项目名称附加到 URL,然后新页面显示特定项目信息
  • 人们会更正您在示例代码中的错误,因为这将被视为您的生产代码......并给我一点时间来执行一些测试
  • @mrpopo Deadalus 更新他的答案似乎是最好的方法。我建议以他为榜样
猜你喜欢
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
相关资源
最近更新 更多