首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP搜索多个结果的多维数组?

PHP搜索多个结果的多维数组?
EN

Stack Overflow用户
提问于 2014-02-19 19:06:28
回答 2查看 222关注 0票数 0

我找到了一种搜索多维数组并输出结果的方法,它可以工作,但是它只找到第一个匹配并停止。如果数组中有多个匹配项,则希望能够显示所有匹配项。

我的数组如下所示(第一层键来自0、1、2等):

代码语言:javascript
运行
复制
Array
(
    [0] => Array
        (
            [mydevice] => blahblah
            [ipadd] => 10.10.10.209
            [portnum] => 16040
        )

代码语言:javascript
运行
复制
function searcharray($value, $key, $array) {
   foreach ($array as $k => $val) {
       if ($val[$key] == $value) {
           return $k;
       }
   }
   return null;
}

$myoutput = searcharray($ptn2, mydevice, $newresult);

然后,我可以使用类似于$newresult[$myoutput][mydevice]的东西来回显结果。

但是,如果数组中有多个条目,并且在“mydevice”键中有匹配的数据,则不会返回它们(只是第一个条目)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-19 19:09:19

这是因为return破坏了函数。你可以用这样的东西:

代码语言:javascript
运行
复制
function searcharray($value, $key, $array) {
    $result = array();    
    foreach ($array as $k => $val) {
        if ($val[$key] == $value) {
            $result[] = $k;
        }
    }
    return $result;
}

现在,如果什么都没有找到,那么总是会得到一个结果为空的数组。你可以像这样工作。

代码语言:javascript
运行
复制
$mydevicekeys = searcharray($ptn2, "mydevice", $newresult);
foreach ($mydevicekeys as $mydevicekey) {
    // work with $newresult[ $mydevicekey ]["mydevice"]
}
票数 1
EN

Stack Overflow用户

发布于 2014-02-19 19:09:33

因此,将结果添加到数组中:)

代码语言:javascript
运行
复制
function searcharray($value, $key, $array) {
   $res = array();
   foreach ($array as $k => $val) {
       if ($val[$key] == $value) {
            $res[] = $key;
       }
   }
   return $res;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21889965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档