53

I have an array that looks like this:

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

How can I find the index of a specific item, in the above array? (For example, the value 'orange')

3 Answers 3

93

Try the array_search function.

From the first example in the manual:

<?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;
?>

A word of caution

When comparing the result, make sure to test explicitly for the value false using the === operator.

Because arrays in PHP are 0-based, if the element you're searching for is the first element in the array, a value of 0 will be returned.

While 0 is a valid result, it's also a falsy value, meaning the following will fail:

<?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');
    }
?>

This is because the == operator checks for equality (by type-juggling), while the === operator checks for identity.

Sign up to request clarification or add additional context in comments.

2 Comments

I think doing the if(in_array(. bit should protect me from the problme you noted after "be careful"
There's a small error in the code, the array is not specified. It should be array_search('blue', $array).
7

have in mind that, if you think that your search item can be found more than once, you should use array_keys() because it will return keys for all matching values, not only the first matching key as array_search().

Regards.

Comments

0

You have to use array_search.

Look here http://www.php.net/manual/en/function.array-search.php

1 Comment

Return Values Returns TRUE if needle is found in the array, FALSE otherwise.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.