在这个论坛的帮助下,我找到了一种获取完全适合我任务的数组的方法。我遇到了跟进问题:
我得到了以下示例数组
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"
[第一部分是找到列表的起点,这只是循环搜索字符串中的每个字符并移至数组中的该值的情况。
一旦找到起点,就可以使用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));