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

时间:2014-02-19 19:06:28

标签: php arrays search multidimensional-array

我找到了一种搜索我的多维数组并输出结果的方法,但它只能找到第一个匹配并停止。如果我在阵列中有多个匹配项,我希望能够全部显示它们。

我的数组看起来像这样(第一层键从0,1,2等):

Array
(
    [0] => Array
        (
            [mydevice] => blahblah
            [ipadd] => 10.10.10.209
            [portnum] => 16040
        )

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”键中的匹配数据不会返回它们(只是第一个)。

2 个答案:

答案 0 :(得分:1)

这是因为return打破了这个功能。你可以使用这样的东西:

function searcharray($value, $key, $array) {
    $result = array();    
    foreach ($array as $k => $val) {
        if ($val[$key] == $value) {
            $result[] = $k;
        }
    }
    return $result;
}

现在你总是会得到一个数组 - 如果没有找到则为空。你可以像这样工作。

$mydevicekeys = searcharray($ptn2, "mydevice", $newresult);
foreach ($mydevicekeys as $mydevicekey) {
    // work with $newresult[ $mydevicekey ]["mydevice"]
}

答案 1 :(得分:0)

所以将结果添加到数组中:)

function searcharray($value, $key, $array) {
   $res = array();
   foreach ($array as $k => $val) {
       if ($val[$key] == $value) {
            $res[] = $key;
       }
   }
   return $res;
}