按索引而不是按值从php的多维关联数组中的特定索引中搜索所有值

问题描述 投票:0回答:1

在这个论坛的帮助下,我找到了一种获取完全适合我任务的数组的方法。我遇到了跟​​进问题:

我得到了以下示例数组

Array ( 
[A] => Array (
 [D] => Array (
  [A] => Array (
   [M] => Array (
    [result] => ADAM )
   [N] => Array (
    [result] => ADAN )
      )
    )
  )  
  [H] => Array (
   [E] => Array (
    [N] => Array (
     [R] => Array (
      [Y] => Array (
       [result] => HENRY )
       )
    [N] => Array (
     [E] => Array (
      [S] => Array (
       [result] => HENNES )
           )
         )
       )
     )
   )
 )

其中字母是索引,而我最终得到每个名称的结果数组。现在,我正在寻找一种使用特定搜索字符串搜索此数组的方法,并且应该可以从第三个字符开始。因此,如果我搜索“ ADA”,我想从以下所有结果数组中获取值,它们都是“ ADAM”和“ ADAN”,因为它们都跟在Array ['A'] ['D'] ['A']上。

我开始在正确的索引处搜索没有任何麻烦,但我想不出一种方法来访问所有“结果”数组。仅找到了搜索最终值(ADAM,ADAN)的方法,但声明我正在从搜索点中寻找所有可能的最终值。

所以基本上我想从结果字符串中获取所有值,这些结果值来自我的搜索字符串中最后一个字符作为数组的索引。希望这种解释指出我正在寻找什么。

预先感谢!

简而言之:

//my Input
$searchstring = 'ADA';

//Output i want

"ADAM",  "ADAN";

//Input
$searchstring = 'ADAM';

//Output

"ADAM"





php arrays search multidimensional-array associative-array
1个回答
0
投票

[第一部分是找到列表的起点,这只是循环搜索字符串中的每个字符并移至数组中的该值的情况。

一旦找到起点,就可以使用array_walk_recursive(),它只会访问叶节点-因此,这仅是名称(在这种情况下),因此请创建所有这些节点的列表并返回它们。 。

array_walk_recursive()

应该给...

function getEntry ( array $result, string $search )  {
    for($i = 0; isset($search[$i]); $i++){
        $result = $result[$search[$i]];
    }
    $output = [];
    array_walk_recursive($result, function ( $data ) use (&$output)   {
        $output[] = $data;
    });
    return $output;
}

$searchstring = 'ADA';
print_r(getEntry($result, $searchstring));
© www.soinside.com 2019 - 2024. All rights reserved.