【问题标题】:PHP search multidimensional array with more than one result?PHP搜索具有多个结果的多维数组?
【发布时间】:2014-02-19 19:06:28
【问题描述】:

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

我的数组看起来像这样(第一层键从 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”键中有匹配的数据,它不会返回它们(只是第一个)。

【问题讨论】:

    标签: php arrays search multidimensional-array


    【解决方案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"]
    }
    

    【讨论】:

    • 这非常有效。它返回一个或多个结果(如果找到多个结果)。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多