web-dev-qa-db-ja.com

アイテムのPHPインデックス

次のような配列があります。

$fruit = array('Apple','orange','grape');

上記の配列で特定のアイテムのインデックスを見つけるにはどうすればよいですか? (たとえば、値 'orange')

39
mcgrailm

array_search 関数を試してください。

マニュアルの最初の例から:

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>

注意事項

結果を比較するときは、===演算子を使用して、値falseを明示的にテストしてください。

PHPの配列は0ベースであるため、検索している要素が配列の最初の要素である場合、値0が返されます。

0は有効な結果ですが、偽の値でもあります。つまり、次は失敗します。

<?php
    $array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');   

    $key = array_search('blue',$array);

    if($key == false) {
        throw new Exception('Element not found');
    }
?>

これは、==演算子がequality(タイプジャグリングによる)をチェックする一方で、===演算子がidentityをチェックするためです。

検索項目が複数回見つかると思われる場合は、 array_keys() を使用する必要があります。これは、最初に一致するキーだけでなく、 array_search()

よろしく。

4
Mihail Dimitrov

Array_searchを使用する必要があります。

こちらをご覧ください http://www.php.net/manual/en/function.array-search.php

0