PHP - 如何创建一个递归函数? [英] PHP - How can I create a recursive function?
本文介绍了PHP - 如何创建一个递归函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的数组:
阵列(1){
[农场] =>阵列(1){
[动物] =>阵列(1){
[马] =>阵列(4){
[弗雷德] =>串(4)弗雷德
[SAM] =>串(4)山姆
[阿兰] =>串(4)阿兰
[约翰] =>串(4)约翰
}
}
}
}
我的功能(由@FrayneKonok创建)
的$ id =2;
$搜索=马;
get_values($ ARR);
功能get_values($改编,的$ id){
全球搜索$;
的foreach($改编为$关键=> $值){
如果($键== $搜索){
如果(is_array($值)){
回声(加入(< A HREF ='?mypage.php ID =$ ID&放大器; DIR =。$值'><李>中,array_keys($值)));
回声(< /李>< / A>中);
}其他{
回波($值);
}
}其他{
get_values($值);
}
}
}
get_values($阵列,$ ID);
的结果是:
弗雷德
< A HREF =mypage.php ID = 2及?DIR =阵列><立GT;萨姆和LT; /李>< / A>
< A HREF =mypage.php ID = 2及?DIR =阵列><立GT;阿兰< /李>< / A>
< A HREF =mypage.php ID = 2及?DIR =阵列><立GT;约翰和LT; /李>< / A>
我在寻找的结果是:
< A HREF =?mypage.php ID = 2及DIR =弗雷德><李>弗雷德< /李>< / A>
< A HREF =mypage.php ID = 2及?DIR = SAM><立GT;萨姆和LT; /李>< / A>
< A HREF =mypage.php ID = 2及?DIR =艾伦><立GT;阿兰< /李>< / A>
< A HREF =mypage.php ID = 2及?DIR =约翰><立GT;约翰和LT; /李>< / A>
另一个例子是当我使用如果($搜索=农场)
我的结果就变成了:
动物
当我在寻找的结果是:
< A HREF =?mypage.php ID = 2及DIR =动物><李>动物< /李>< / A>
解决方案
阵列和输入,函数调用
$ ARR =阵列(农场=>
阵列(动物=>
阵列(马=>
阵列(弗雷德=>中弗雷德,
萨姆=> 萨姆
阿兰=> 阿兰
约翰=> 约翰)
)
)
);
$搜索='农场';
get_values($ ARR);
功能:
函数get_values($ ARR){
全球搜索$;
的foreach($改编为$关键=> $值){
如果($键== $搜索){
如果(is_array($值)){
$键= array_keys($值);
如果(计数($键)→1){
为($ I = 0; $ I<计数($键); $ I ++){
呼应'< A HREF =mypage.php ID = 2及?DIR ='$键[$ i]。'><李>'$键[$ i]'< /李> &所述; / A>';
}
}其他{
呼应'< A HREF =mypage.php ID = 2及?DIR ='$键[0]。'><李>'$键[0]'< /李>< / A>';
}
}
其他{
回声$价值;
}
}其他{
get_values($值);
}
}
}
输出
< A HREF =?mypage.php ID = 2及DIR =动物><李>动物< /李>< / A>
亦作马测试
。
My array:
array(1) {
["farm"] => array(1) {
["animals"] => array(1) {
[horses] => array(4) {
["fred"] => string(4) "fred"
["sam"] => string(4) "sam"
["alan"] => string(4) "alan"
["john"] => string(4) "john"
}
}
}
}
My function (created by @FrayneKonok)
$id = "2";
$search = "horses";
get_values($arr);
function get_values($arr, $id) {
global $search;
foreach($arr as $key => $value) {
if($key == $search) {
if(is_array($value)) {
echo(join("<a href='mypage.php?id=".$id."&dir=".$value."'><li>",array_keys($value)));
echo("</li></a>");
} else {
echo($value);
}
} else {
get_values($value);
}
}
}
get_values($array,$id);
The result is:
"fred"
<a href="mypage.php?id=2&dir=Array"><li>sam</li></a>
<a href="mypage.php?id=2&dir=Array"><li>alan</li></a>
<a href="mypage.php?id=2&dir=Array"><li>john</li></a>
The result I'm looking for:
<a href="mypage.php?id=2&dir=fred"><li>fred</li></a>
<a href="mypage.php?id=2&dir=sam"><li>sam</li></a>
<a href="mypage.php?id=2&dir=alan"><li>alan</li></a>
<a href="mypage.php?id=2&dir=john"><li>john</li></a>
Another example is when i use if($search = "farm")
my result becomes:
"animals"
When the result I'm looking for is:
<a href="mypage.php?id=2&dir=animals"><li>animals</li></a>
解决方案
Array and input, function call
$arr = array("farm" =>
array("animals"=>
array("horses" =>
array("fred" => "fred",
"sam" => "sam",
"alan" => "alan",
"john" => "john")
)
)
);
$search = 'farm';
get_values($arr);
Function:
function get_values($arr){
global $search;
foreach($arr as $key => $value){
if($key == $search){
if(is_array($value)){
$keys = array_keys($value);
if(count($keys) > 1){
for($i = 0; $i < count($keys); $i++){
echo '<a href="mypage.php?id=2&dir='.$keys[$i].'"><li>'.$keys[$i].'</li></a>';
}
}else{
echo '<a href="mypage.php?id=2&dir='.$keys[0].'"><li>'.$keys[0].'</li></a>';
}
}
else{
echo $value;
}
}else{
get_values($value);
}
}
}
Output
<a href="mypage.php?id=2&dir=animals"><li>animals</li></a>
Also tested for the horses
.
这篇关于PHP - 如何创建一个递归函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文