1

我需要检查给定的数组是否会匹配另一个数组。我不知道如何操作第一个数组,或者以其他方式匹配它。

我需要匹配这个数组:

    Array
(
    [1] => site
    [2] => blog
    [3] => index.php
)

匹配这个:

Array
(
    [site] => Array
        (
            [path] => site
            [name] => site
            [kind] => directory
            [content] => Array
                (
                    [404] => Array
                        (
                            [path] => site/404.php
                            [name] => 404.php
                            [extension] => php
                            [kind] => file
                        )

                    [blog] => Array
                        (
                            [path] => site/blog
                            [name] => blog
                            [kind] => directory
                            [content] => Array
                                (
                                    [contact] => Array
                                        (
                                            [path] => site/blog/contact.php
                                            [name] => contact.php
                                            [extension] => php
                                            [kind] => file
                                        )

                                    [index] => Array
                                        (
                                            [path] => site/blog/index.php
                                            [name] => index.php
                                            [extension] => php
                                            [kind] => file
                                        )

                                    [about] => Array
                                        (
                                            [path] => site/blog/about.php
                                            [name] => about.php
                                            [extension] => php
                                            [kind] => file
                                        )

                                )

                        )

                    [index] => Array
                        (
                            [path] => site/index.php
                            [name] => index.php
                            [extension] => php
                            [kind] => file
                        )

                )

        )

)

并返回文件的内容数组:

                            [index] => Array
                                (
                                    [path] => site/blog/index.php
                                    [name] => index.php
                                    [extension] => php
                                    [kind] => file
                                )

帮助将不胜感激!

4

4 回答 4

2

只需索引到数组中:

$b[$a[1]]['content'][$a[2]]['content'][str_replace('.php', '', $a[3])]

如果您的输入可以是可变长度,请改为在循环中执行此操作。

于 2010-02-13T07:41:26.473 回答
1

所以你需要...

$array2[$array[1]][content][$array[2]][substr(0, stripos($array[3], "."), $array[3])]

或者接近的东西...

于 2010-02-13T07:41:20.560 回答
0
$path = array('site', 'blog', 'index.php');
$node = array(...);  // the tree

for ($i = 0; $i < count($path) && !is_null($node); ++$i) {
  $p = $path[$i];
  $items = $i ? $node['content'] : $node;
  $n = null;
  foreach ($items as $it) {
    if ($it['name'] == $p) {
      $n = $node['content'][$p];
      break;
    }
  }
  $node = $n;
}
于 2010-02-13T07:32:31.147 回答
0

我可以认为这意味着您要检查较大数组中的索引列表并返回任何可用/匹配的结果吗?如果是这样,并假设你的第一个数组被调用$indexes并且你的第二个被调用$results,你可以这样做:

$found = array();
foreach($indexes as $index) {
  if(isset($results[$index])) {
    $found[] = $results[$index]['content'];
  }
}

现在,您将拥有$found在 $results 中找到的与 $indexes 中的索引匹配的所有内容条目的列表。希望有帮助。

于 2010-02-13T07:38:40.817 回答