33

我想知道在数组中搜索键并返回它的值的最佳方法是什么。类似于 array_search 但用于键的东西。循环是最好的方法吗?

大批:

Array([20120425] => 409 [20120426] => 610 [20120427] => 277
      [20120428] => 114 [20120429] => 32 [20120430] => 304
      [20120501] => 828 [20120502] => 803 [20120503] => 276 [20120504] => 162)

我正在寻找的价值:20120504

4

5 回答 5

98

钥匙已经是……嗯……钥匙

echo $array[20120504];

如果您不确定,如果密钥存在,请测试它

$key = 20120504;
$result = isset($array[$key]) ? $array[$key] : null;

小补充:

$result = @$array[$key] ?: null;

有人可能会争辩说,这@很糟糕,但请保持严肃:这更具可读性和直截了当,不是吗?

更新:使用 PHP7,我之前的示例可以在没有错误消音器的情况下使用

$result = $array[$key] ?? null;
于 2012-05-05T00:22:23.970 回答
10
array_search('20120504', array_keys($your_array));
于 2012-05-05T00:21:25.330 回答
8
<?php

// Checks if key exists (doesn't care about it's value).
// @link http://php.net/manual/en/function.array-key-exists.php
if (array_key_exists(20120504, $search_array)) {
  echo $search_array[20120504];
}

// Checks against NULL
// @link http://php.net/manual/en/function.isset.php
if (isset($search_array[20120504])) {
  echo $search_array[20120504];
}

// No warning or error if key doesn't exist plus checks for emptiness.
// @link http://php.net/manual/en/function.empty.php
if (!empty($search_array[20120504])) {
  echo $search_array[20120504];
}

?>
于 2012-05-05T00:31:02.527 回答
-1

这是直接来自 PHP.net 的示例

$a = array(
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "seventeen" => 17
);

foreach ($a as $k => $v) {
    echo "\$a[$k] => $v.\n";
}

在 foreach 中,您可以将每个键与您正在寻找的东西进行比较

于 2012-05-05T00:23:47.110 回答
-2

为了获取多维数组中的最后一个值并按升序排列,

    function lastvalue($array, $key)
    {  
        $a = array();
        for($i = 0; $i < count($array); $i++){
                $a[] = $array[$i][$key];
        }
       sort($a);
       return $a[$i-1];
    }

    $a=array(
            array("row" => 2, "column" => 6),
            array("row" => 2, "column" => 3), 
            array("row" => 2, "column" => 7)
           );

    echo lastvalue($a, "column"); //result = 7
于 2021-04-29T04:01:55.373 回答