php 指定した配列の値のインデックス番号を取得する

  • 作成日 2020.12.14
  • 更新日 2022.02.28
  • php
php 指定した配列の値のインデックス番号を取得する

phpで、array_searchを使用して、指定した配列の値のインデックス番号を取得するサンプルコードを記述してます。phpのバージョンは8.0です。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0
  • nginx 1.14.1

array_search使い方

array_searchを使用すれば、指定した配列の値のインデックス番号を取得することが可能です。

array_search(値, 配列);
// 存在すればインデックス番号を返し、しなければFALSEを返す

以下は、指定した配列の値のインデックス番号を取得するサンプルコードとなります。

<?php

$arr = [1, 2, 3, 4, 5];

$result = array_search(1, $arr);

var_dump($result); // int(0)

$result = array_search(3, $arr);

var_dump($result); // int(2)

$result = array_search(6, $arr);

var_dump($result); // bool(false)

ただし、数字「1.0」や文字列の「1 , 1.0」も存在するとインデックス番号を返いします。

<?php

$arr = [1, 2, 3, 4, 5];

$result = array_search(1, $arr);

var_dump($result); // int(0)

$result = array_search(1.0, $arr);

var_dump($result); // int(0)

$result = array_search("1", $arr);

var_dump($result); // int(0)

$result = array_search("1.0", $arr);

var_dump($result); // int(0)

falseにしたい場合は、第三引数に「true」を指定します。

<?php

$arr = [1, 2, 3, 4, 5];

$result = array_search(1, $arr, true);

var_dump($result); // int(0)

$result = array_search(1.0, $arr, true);

var_dump($result); // bool(false)

$result = array_search("1", $arr, true);

var_dump($result); // bool(false)

$result = array_search("1.0", $arr, true);

var_dump($result); // bool(false)

また条件式で使用すると、インデックス番号「0」が「false」と判定されてしまうので、

<?php

$arr = [1, 2, 3, 4, 5];


if (array_search(1, $arr)) {
    echo 'あります';
}else{
    echo 'ない';
}
// ない

以下のように「!== false」を使用して判定する必要があります。

<?php

$arr = [1, 2, 3, 4, 5];


if (array_search(1, $arr) !== false) {
    echo 'あります';
} else {
    echo 'ない';
}
// あります

if (array_search(2, $arr) !== false) {
    echo 'あります';
} else {
    echo 'ない';
}
// あります

if (array_search(6, $arr) !== false) {
    echo 'あります';
} else {
    echo 'ない';
}
// ない