我在数组中找到正确的密钥时遇到了一些麻烦:
当我有一个数组:$ 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);
答案 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);