使用PHP查找下一个数组行

时间:2018-04-13 03:12:32

标签: php arrays array-key

我正在使用一个代码,该代码根据当前值查找下一个数组值,但仍然总是返回1。

$users_emails = array('Spence', 'Matt', 'Marc', 'Adam', 'Paul');

$current = 'Spence';
$keys = array_keys($users_emails);
$ordinal = (array_search($current,$keys)+1);
$next = $keys[$ordinal];
echo $next;

怎么了?

5 个答案:

答案 0 :(得分:3)

您正在搜索错误的数组以启动并回显错误的数组。

$users_emails = array('Spence', 'Matt', 'Marc', 'Adam', 'Paul');

$current = 'Spence';
$ordinal = (array_search($current,$users_emails)+1);
$next = $users_emails[$ordinal];
echo $next;

查看我的代码,我在数组中搜索带有名称的Spence,然后返回一个键号 此密钥号码应在用户电子邮件中回显而不是密钥。

https://3v4l.org/0gJ1m


如果你需要它来使用关联数组,你需要这样做:

$users_emails = array('a' => 'Spence', 'b' => 'Matt', 'c' => 'Marc', 'd' => 'Adam', 'e' => 'Paul');
$keys = array_values(array_keys($users_emails));

$current = 'Matt';
$next = ""; // set to not get notice if end of array

$ordinal = array_search($current,$users_emails);
$nextkey = (array_search($ordinal, $keys)+1);
If(!isset($keys[$nextkey])){
    // what to do if your at the end of array
    // $nextkey = 0;
    // Echo "message";
    // Or whatever you want
}else{
    $next = $users_emails[$keys[$nextkey]];
}
echo $next;

我在键上使用array_values来获取一个接受+1的索引数组,以找到数组中的下一个键。

https://3v4l.org/iVO6U

答案 1 :(得分:2)

$keyskeys,而不是value。将数组与$ordinal一起使用。

$next = $users_emails[$ordinal];

演示:https://3v4l.org/REhGr

array_keys为您提供key的数组。也可以使用普通数组作为array_search。以下是您目前为$keys构建的内容的视觉效果。

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

演示:https://3v4l.org/GQQcF

$users_emails = array('Spence', 'Matt', 'Marc', 'Adam', 'Paul');
$current = 'Marc';
$ordinal = (array_search($current, $users_emails)+1);
$next = !empty($users_emails[$ordinal]) ? $users_emails[$ordinal] : FALSE;
echo $next;

答案 2 :(得分:2)

只需使用这个:

$users_emails = array('Spence', 'Matt', 'Marc', 'Adam', 'Paul');

$current = 'Spence';
$ordinal = array_search($current,$users_emails) + 1;
$next = $users_emails[$ordinal];
echo $next;

答案 3 :(得分:1)

这就是我的意思:

<?php
$users_emails = array('Spence', 'Matt', 'Marc', 'Adam', 'Paul');
$current = 'Spence'; $ordinal = array_search($current, $user_emails)+1;
$next = $user_emails[$ordinal];
echo $next;
?>

根据您的行为,您可能希望改为使用next()

<?php
$user_emails = array('Spence', 'Matt', 'Marc', 'Adam', 'Paul');
$current = current($user_emails); $next = next($user_emails); reset($user_emails);
echo $next;
?>

答案 4 :(得分:1)

我检查了你的代码。在您的代码中,array_keys函数将$users_email的索引返回为:

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

现在您在索引数组中搜索$current = 'Spence';。这就是为什么returns 1

您希望搜索字符串的下一个值为:

$users_emails = array('Spence', 'Matt', 'Marc', 'Adam', 'Paul');

    $current = 'Spence';
    //$keys = array_keys($users_emails);//print_r($keys);
    $ordinal = (array_search($current,$users_emails)+1);
    $next = $users_emails[$ordinal];
    echo $next;

输出:

Matt