在php数组中查找特定键

时间:2012-01-31 16:32:25

标签: php arrays

我在数组中找到正确的密钥时遇到了一些麻烦:

当我有一个数组:$ haystack

$haystack = array(0 => 'apple', 
                  1 => 'apple', 
                  2 => 'pear', 
                  3 => 'apple', 
                  4 => 'banana');

并使用函数array_search

$key = array_search('apple', $haystack);

函数将$ key值设置为'0'($ key = 0)

我需要找到数组(3)中第四项的键,它也是苹果... 有没有人知道从给定索引搜索数组并返回值的函数?

例如:

array_search_start($needle, $haystack, $startPosition);

8 个答案:

答案 0 :(得分:4)

使用array_keys和第二个参数指定搜索键的值。

$keys = array_keys($haystack, 'apple');

因此$keys将包含与搜索值(apple)对应的已找到键的数组:

Array
(
    [0] => 0
    [1] => 1
    [2] => 3
)

现在你可以得到最后一个,或者第一个,等等。如果你需要最后一个:

$key = end($keys);

答案 1 :(得分:0)

这应该有效:

<?php
function array_search_start($needle, $haystack, $start) {
  for ($i = $start; $i < length($haystack); $i++)
    if ($haystack[$i] == $needle) return $i;
  return FALSE; // You'll need === operator to distinguish between False and 0
}
?>
祝你好运!

答案 2 :(得分:0)

你也可以使用array_slice比循环更简单地执行此操作:

<?php
$key = array_search($needle, array_slice($haystack, $startPosition,-1,true));
?>

此语法需要PHP&gt; = 5.0.2,因为我们需要保留密钥(因此-1(没有长度限制)和true保留原始密钥)

答案 3 :(得分:0)

对PHP知之甚少,但是,你不能只将偏移量作为起始位置吗?

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

所以,在你的情况下,你会做

$key = array_search('apple', $haystack, 2);

答案 4 :(得分:0)

您可以使用array_keys获取值为apple

的所有键
$keys = array_keys($haystack, 'apple');

如果你需要它作为一个函数编写,那么你可以这样做:

$searchValue = 'apple';
$keys = searchKeys($haystack, $searchValue);
function searchKeys($haystack,$searchValue) {
     $keys = array_keys($haystack, $searchValue);
     return $keys;
}

希望这可以帮助你:)

答案 5 :(得分:0)

<?

$array = array("one"=>'paul',"two"=>'lady');
print_r(array_values($array));

?>

答案 6 :(得分:0)

$haystack = array(0 => 'apple', 
                  1 => 'apple', 
                  2 => 'pear', 
                  3 => 'apple', 
                  4 => 'banana');
$find = 'apple';
foreach ($haystack as $k=>$v) {
    if($find == $v) {
            echo 'found! key is '.$k.'<br />';
            }
}  

答案 7 :(得分:0)

这将非常容易使用

$haystack = array(0 => 'apple', 
                  1 => 'apple', 
                  2 => 'pear', 
                  3 => 'apple', 
                  4 => 'banana');

$keys = array_keys($haystack,'apple');
foreach($keys as $k):
    $searchK[] = $haystack[$k];
endforeach;

print_r($searchK);