我找到了一种搜索多维数组并输出结果的方法,它可以工作,但是它只找到第一个匹配并停止。如果数组中有多个匹配项,则希望能够显示所有匹配项。
我的数组如下所示(第一层键来自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”键中有匹配的数据,则不会返回它们(只是第一个条目)。
发布于 2014-02-19 19:09:19
这是因为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"]
}发布于 2014-02-19 19:09:33
因此,将结果添加到数组中:)
function searcharray($value, $key, $array) {
$res = array();
foreach ($array as $k => $val) {
if ($val[$key] == $value) {
$res[] = $key;
}
}
return $res;
}https://stackoverflow.com/questions/21889965
复制相似问题