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"值。当我使用上面的函数时,我只返回第一个(找到的)键,但我想要所有匹配的键。
答案 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()函数会有帮助吗?