在关联数组中查找最大和最小键

Dea*_*ock 1 php arrays associative-array

我有像这样的关联数组

array
{
    [company 1]=>array
                      (
                        [1981] => 1
                        [1945] => 3
                      )
   [company 2]=>array
                    (
                       [1990] => 18
                       [2005] => 13
                    )
   [company 3]=>array
                    (
                       [1950] => 6
                       [2012] => 9
                    )
}
Run Code Online (Sandbox Code Playgroud)

我想获得最低和最高的键,即 1945 年和 2012 年。我怎样才能做到这一点?我已经搜索过 stackoverflow 并且关联数组的 Hightest 值 是最接近的可能性,但它给出了最小值和最大值,我想要最小值和最大值键。

**我不想使用foreach循环**

Pas*_*rby 5

如果你真的讨厌foreach,这里有一个解决方案:

$arr = array(
  "Company 1" => array(
    "1981" => 1,
    "1945" => 3
  ),

  "Company 2" => array(
    "1990" => 18,
    "2005" => 13
  ),

  "Company 3" => array(
    "1950" => 6,
    "2012" => 9
  )
);


$arr = array_map("array_keys", $arr);
$arr = array_reduce($arr, "array_merge", array());
Run Code Online (Sandbox Code Playgroud)

$arr最终会是这样的:

Array
(
    [0] => 1981
    [1] => 1945
    [2] => 1990
    [3] => 2005
    [4] => 1950
    [5] => 2012
)
Run Code Online (Sandbox Code Playgroud)

现在您可以使用min()max()函数或sort()轻松获得最高和最低值。

sort($arr);
echo end($arr); /*highest value; actual output: 2012*/
echo reset($arr); /*lowest value; actual output: 1945*/
Run Code Online (Sandbox Code Playgroud)