48

PHPで、次のような連想配列があるとします。

$pets = array(
    "cats" => 1,
    "dogs" => 2,
    "fish" => 3
);

値が最も低いキーを見つけるにはどうすればよいですか?ここで、私は探しているでしょうcats

私が見逃した組み込みのPHP関数がありますか?これはこれを行いますか?以下のように、いくつかの値が同一であることを説明するソリューションがあれば、それも素晴らしいことです。

$pets = array(
    "cats" => 1,
    "dogs" => 1,
    "fish" => 2
);

上記では、出力するだけでもかまいません。catsまたはdogs

前もって感謝します。

4

6 に答える 6

110

array_keysあなたの友だちです:

$pets = array(
    "cats" => 1,
    "dogs" => 2,
    "fish" => 3
);
array_keys($pets, min($pets));  # array('cats')

PS:SOのどこかに重複があります(max代わりにありましminたが、はっきりと覚えています)。

于 2009-10-19T12:22:12.973 に答える
13

それが私がやった方法です。

$pets = array(
    "cats" => 1,
    "dogs" => 2,
    "fish" => 3
);

array_search(min($pets), $pets); 

お役に立てば幸いです

于 2012-05-29T01:01:43.233 に答える
3

これらを調べてみてください:

于 2009-10-19T12:25:42.360 に答える
2
$min_val = null;
$min_key = null;
foreach($pets as $pet => $val) {
  if ($val < $min_val) {
    $min_val = $min;
    $min_key = $key;
  }
}

配列を反転して、キーで並べ替えることもできます。

$flipped = array_flip($pets);
ksort($flipped);

次に、最初のキーが最小値であり、その値が元の配列のキーです。

于 2009-10-19T12:20:57.983 に答える
0

単一の文字列を取得するための別のアプローチは、望ましい並べ替え方法key()を使用し、並べ替えられた配列でを使用して最初のキーを直接取得することです。この場合、最小値のキーが必要であり、最小値asortから最大値にソートされ、内部ポインタがリセットされます。逆(最高から最低)を取得するには、を使用しますarsort

例:https ://3v4l.org/5ijPh

$pets = array(
   "dogs" => 2,
   "cats" => 1,
   "fish" => 3
);
asort($pets);
var_dump(key($pets));
//string(4) "cats"
$pets = array(
   "dogs" => 1,
   "cats" => 1,
   "fish" => 3
);
asort($pets);
var_dump(key($pets));
//string(4) "dogs"

すべてのPHP配列ソート方法は、参照によって配列を変更することに注意してください。元の配列が変更されないようにするには、配列のコピーを作成するか、を使用しIteratorます。

$petsSorted = $pets;
asort($petsSorted);
key($petsSorted);
于 2019-12-06T00:42:41.017 に答える
-3

最高値を見つける

print max(120, 7, 8, 50);

戻り値->120

$array = array(100, 7, 8, 50, 155, 78);
print max($array);

戻り値->155

最小値を見つける

print min(120, 7, 8, 50);

戻り値->7

$array = array(50, 7, 8, 101, 5, 78);
print min($array);

戻り値->5

于 2011-12-21T12:42:05.357 に答える