首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多维数组

多维数组
EN

Stack Overflow用户
提问于 2011-07-12 21:47:18
回答 2查看 501关注 0票数 3

有没有办法从任何位置访问多维数组?示例:

代码语言:javascript
复制
$arr = array (

    1 => array ( 1, 'some-url-one', 'Some Title One' ),

    2 => array ( 2, 'some-url-two', 'Some Title Two' ),

    3 => array ( 2, 'some-url-three', 'Some Title Three' ),

);

然后,如果我们有一个项目的id,例如2,并且想要获得该项目的标题,我们只需使用:

代码语言:javascript
复制
$title = $arr[2][2]; // which outputs Some Title Two

如果我们想要获取同一项目的url,我们只需使用:

代码语言:javascript
复制
$title = $arr[2][1];  // which outputs some-url-two

但是,如果我们有URL (some url-two)并想要获取该项目的id或标题,该怎么办呢?

有两个义务:

1-遍历数组并检查该URL是否存在2-获取id和标题

怎样做才是最好的方式呢?我已经有3个数组了:

1- url的id

2- id的url

3- id to title

代码语言:javascript
复制
$id2url = array (

    1 => 'some-url-one',
    2 => 'some-url-two',
    3 => 'some-url-three'

);

另外两个是相同的过程。所以我想通过组合这3个数组来优化我的代码。那么如何通过给定的url访问id和标题呢?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-07-12 21:54:16

您可以像这样使用array_search:

代码语言:javascript
复制
$id = array_search($url, $url2id);
票数 1
EN

Stack Overflow用户

发布于 2011-07-12 23:25:45

我认为有一种更简单的方法来处理这件事。如果您已经有了URL,那么您可能已经在所有数据的父数组中有了索引。在这种情况下,您可以简单地使用以下命令访问它

代码语言:javascript
复制
$found_id = $arr[$known_parent_idx][0];
$found_title = $arr[$known_parent_idx][2];

但是,如果您没有该索引,则可以执行基于循环的检查,如下所示。假设你循环遍历这个多维数组,这就是它的工作原理。

代码语言:javascript
复制
foreach ($arr AS $idx => $subarr)
{
  if ($subarr[1] == $known_url)
  {
    $found_id = $subarr[0];
    $found_title = $subarr[2];
  }
}

现在,如果URL也是父索引,则可以更轻松地执行此操作。在本例中,我们讨论的是关联数组。这里有一个可能更有帮助的结构。

代码语言:javascript
复制
$arr = array (
  'some-url-one' => array ( 'id' => 1, 'title' => 'Some Title One' ),
  'some-url-two' => array ( 'id' => 2, 'title' => 'Some Title Two' ),
  'some-url-three' => array ( 'id' => 2, 'title' => 'Some Title Three' ),
);

这将允许你立即找到你正在寻找的东西,而不需要任何搜索。但这将要求URL在每种情况下都是唯一的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6665200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档