【问题标题】:Function with loop calling same function in PHP循环调用PHP中相同函数的函数
【发布时间】:2015-03-20 23:39:24
【问题描述】:

我遇到了麻烦。我试图让它工作很长时间,所以我决定在这里寻求帮助。

我有一个里面有一些数组:

$myarray = [
['string1','string2'],
['string3','string4'],
['string5',['string6','string7','string99']],
['string8','string9']
];

我正在制作一个搜索 s 的函数

function searchArray($array,$chave,$id) {

   foreach ($array as $key) {
           if (is_array($key)) {

            if (($key[0] == $chave) && ($key[1] == $id)) {
              break;
            }  
               else {
               searchArray($key,$chave,$id);
               }
           }
   } 
    return $key;
} 

$result = searchArray($myarray,'string6','string7');
print_r($result);

它应该打印 ['string6','string7','string99']] 但它打印数组的最后一个“键”:['string8','string9']

休息不工作。休息后,它继续检查下一个数组。

【问题讨论】:

  • 那为什么要打印 ['string6','string7','string99'] 呢?您搜索 string1 和 string2 作为索引 0 和 1。否则您会在不获取返回值的情况下进行毫无意义的递归?我不明白你的逻辑。你想达到什么目的?即打印假定值的原因是什么?
  • 错了。我编辑了。我真的在寻找 string6 和 string7。对不起。

标签: php arrays function loops


【解决方案1】:

通过这些修改,它返回预期值:

<?php

 $myarray = [
['string1','string2'],
['string3','string4'],
['string5',['string6','string7','string99']],
['string8','string9']
];

function searchArray($array,$chave,$id) {

    foreach ($array as $key) {
        if (is_array($key)) {
            if (($key[0] == $chave) && ($key[1] == $id)) {
                return $key;
            } else {
                $res = searchArray($key,$chave,$id);
                if($res !== false) {
                    return $res;
                }
            }
        }
    } 
    return false;
} 

$result = searchArray($myarray,'string6','string7');
print_r($result);

失败是为了打破成功。这没有任何意义。

您需要在成功时返回值。如果没有成功返回false。想象一下,搜索到的值可能会找不到,所以它应该返回 false。

【讨论】:

  • 谢谢。我有超过 5 年的 php 编程经验,真的花了我很长时间。
猜你喜欢
  • 2020-04-30
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 2018-02-16
  • 2011-12-01
  • 2021-06-19
  • 2013-11-14
  • 1970-01-01
相关资源
最近更新 更多