在数组中搜索并找到几个键

时间:2015-04-20 22:17:05

标签: php arrays

public function array_searchh($needle, $haystack) {
    foreach ($haystack as $key => $value) {
        $current_key = '';
        $current_key .= $key;
        if ($needle === $value OR (is_array($value) && $this->array_searchh($needle, $value) !== false)) {
            return $current_key;
        }
    }
    return false;
}

当我在数组中搜索返回第一个键时,但我想搜索并且如果有相同的值则返回所有键。

[0] => Array ([id] => 1[value] => payamm)
[1] => Array ([id] =>2[value]=>payam)
[2] => Array ([id] => 25[value] => payam)
[3] => Array ([id] => 3[value] => payam)
[4] => Array ([id] => 4[value] => payam)
[5] => Array ([id] => 5[value] => 340) 

在上面的数组中,我有几个" payam"值。当我使用上面的函数时,我只返回第一个(找到的)键,但我想要所有匹配的键。

3 个答案:

答案 0 :(得分:1)

不是立即返回密钥,而是将所有匹配的密钥收集到一个数组中,并在函数末尾返回该数组。

public function array_searchh($needle, $haystack) {
    $returnKeys = array();
    foreach ($haystack as $key => $value) {
        $current_key = '';
        $current_key .= $key;
        if ($needle === $value OR (is_array($value) && $this->array_searchh($needle, $value) !== false)) {
            $returnKeys[] = $current_key;
        }
    }
    return (count($returnKeys) > 0) ? $returnKeys : false;
}

答案 1 :(得分:1)

public function array_searchh($needle, $haystack) {
    foreach ($haystack as $key => $value) {
        $current_key = '';
        $current_key .= $key;
        if ($needle === $value OR (is_array($value) && $this->array_searchh($needle, $value) !== false)) {
            $foundKeys[] = $current_key;
        }
    }
    if (isset($foundKeys)) {
        return $foundKeys;
    }
    return false;
}

这应该返回所有找到的键的数组。

答案 2 :(得分:0)

也许array_keys()函数会有帮助吗?