如何从数组中获取值的下一个值。 我有一个像这样的数组
$items = array(
'1' => 'two',
'9' => 'four',
'7' => 'three',
'6'=>'seven',
'11'=>'nine',
'2'=>'five'
);
如何获得“四”或“九”的下一个值。
答案 0 :(得分:2)
我有this
$input = "nine";
$items = array(
'1' => 'two',
'9' => 'four',
'7' => 'three',
'6'=>'seven',
'11'=>'nine',
'2'=>'five'
);
$keys = array_keys($items);
$size = count($keys);
$foundKey = array_search($input,$items);
if($foundKey !== false)
{
$nextKey = array_search($foundKey,$keys)+1;
echo "your input is: ".$input."\n";
echo "it's key is: ".$foundKey."\n";
if($nextKey < $size)
{
echo "the next key => value is: ".$keys[$nextKey]." => ".$items[$keys[$nextKey]]."\n";
}
else
{
echo "there are no more keys after ".$foundKey;
}
}
这个想法是因为键不是任何实际的顺序,我需要通过获取所有键并将它们放入一个数组中来使一个易于遍历的顺序,以便它们的整数键是我们的顺序。这种方式'1'
= 0,'9'
= 1,'11'
= 4。
然后我找到哪个键匹配我们的输入。如果我找到它,我会得到该键的位置和+ 1(下一个键)。从那里我可以使用$items
中输入+1位置的字符串值来引用$keys
中的数据。
如果我们的输入为'five'
,则会遇到问题,因为'five'
是数组中的最后一个值。所以最后一个if语句检查下一个键的索引是否小于键的数量,因为我们所拥有的最大索引是5,而我们拥有的键数是6。
虽然您可以使用array_values
使用有序整数键将所有值都放入数组中,但是除非您还使用array_keys
,否则会丢失原始密钥。如果您先使用array_keys
,则根本不需要使用array_values
答案 1 :(得分:1)
while (($next = next($items)) !== NULL) {
if ($next == 'three') {
break;
}
}
$next = next($items);
echo $next;
对于大数组你可以使用:
$src = array_search('five',$items); // get array key
$src2 = array_search($src,array_keys($items)); // get index array (start from 0)
$key = array_keys($items); // get array by number, not associative anymore
// then what u need just insert index array+1 on array by number ($key[$src2+1])
echo $items[$key[$src2+1]];
答案 2 :(得分:0)
如果是这种情况,您应该首先准备阵列。根据您给定的数组,似乎索引不是连续正确的。尝试使用array_values()函数。
$items = array(
'1' => 'two',
'9' => 'four',
'7' => 'three',
'6'=>'seven',
'11'=>'nine',
'2'=>'five'
);
$new_items = array_values($items);
$new_items = array(
[0] => 'two',
[1] => 'four',
[2] => 'three',
[3] => 'seven',
[4] => 'nine',
[5] =>'five'
);
然后你可以做foreach ..
foreach($new_items as $key => $value) {
// Do the code here using the $key
}