从数组中获取第一个值

时间:2012-09-23 20:11:37

标签: php arrays

我有一个保存用户步骤的PHP数组:

array(
    'step_1' => 1,
    'step_2' => 1,
    'step_3' => 0,
    'step_4' => 0,
    'step_5' => 0
);

因此,我的用户执行step_1和step_2,但他没有执行其他步骤。 现在,我希望得到他不做的第一步的名字,在这个例子中它是“step_3”。

但是如果数组看起来那样:

 array(
    'step_1' => 1,
    'step_2' => 1,
    'step_3' => 1,
    'step_4' => 1,
    'step_5' => 0
);

我想得到“step_5”,比我知道用户不做step_5我可以,为exapmle重定向他们指定页面。我怎么能得到它?

3 个答案:

答案 0 :(得分:6)

您可以使用array_search()

See In Action

<?php 
$array = array(
    'step_1' => 1,
    'step_2' => 1,
    'step_3' => 1,
    'step_4' => 0,
    'step_5' => 0
);

$key = array_search(0, $array); // $key = step_4;

echo $key;
?>

答案 1 :(得分:0)

您可以使用reset($array);

http://php.net/manual/en/function.reset.php

Return Values

Returns the value of the first array element, or FALSE if the array is empty.

编辑:

您可以使用array_search(0,$array);

这将返回第一个找到var的关键字。 (第五步)你的情况。

答案 2 :(得分:0)

你可以尝试

$step = array(
    'step_1' => 1,
    'step_2' => 1,
    'step_3' => 0,
    'step_4' => 0,
    'step_5' => 0
);
var_dump(__missing($step));
var_dump($step);

输出

string 'step_3' (length=6)
array
  'step_1' => int 1
  'step_2' => int 1
  'step_3' => int 1
  'step_4' => int 0
  'step_5' => int 0

示例2

$step = array(
    'step_1' => 1,
    'step_2' => 1,
    'step_3' => 1,
    'step_4' => 1,
    'step_5' => 1
);
var_dump(__missing($step));
var_dump($step);

输出

string 'step_1' (length=6)
array
  'step_1' => int 1
  'step_2' => int 0
  'step_3' => int 0
  'step_4' => int 0
  'step_5' => int 0

使用的功能

function __missing(&$array) {
    $left = array_filter($array, function ($var) {
        return ($var == 1) ? false : true;
    });
    if (! empty($left)) {
        $key = key($left);
        $array[$key] = 1;
        return $key;
    } else {
        array_walk($array, function (&$var) {
            return $var = 0;
        });
        $key = key($array);
        $array[$key] = 1;
        return $key;
    }
}