我找到了一种搜索我的多维数组并输出结果的方法,但它只能找到第一个匹配并停止。如果我在阵列中有多个匹配项,我希望能够全部显示它们。
我的数组看起来像这样(第一层键从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”键中的匹配数据不会返回它们(只是第一个)。
答案 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;
}