带有循环的函数在PHP中调用相同的函数


Function with loop calling same function in PHP

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

我有一个里面有一些阵列:

$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);

它本应打印["第6行"、"第7行"answers"第99行"]但它打印出了数组的最后一个"键":["ring8","ring9"]

休息不起作用。中断后,它继续检查下一个数组。

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

<?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。