Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

return key of array if value is present PHP

What is the fastest way to check if a variable is present in an array as its value and return the key of it?

Example:

$myArray = [ "test" => 1, "test2" = 2, "test3" = 3];

$var = [1,6,7,8,9];

What I need is if($var is in $myArray) return (in this case) "test".

Is this possible without doing two loops? Are there any functions like in_array() that returns the key of the value if found?

like image 270
AleXzpm Avatar asked Nov 16 '25 01:11

AleXzpm


2 Answers

You can use array_search

foreach($var as $value)
{
    $key = array_search($value, $myArray);
    if($key === FALSE)
    {
        //Not Found
    }
    else
    {
        //$key contains the index you want
    }
}

Be careful, if the value is not found the function will return false but it may also return a value that can be treated the same way as false, like 0 on a zero based array so it's best to use the === operator as shown in my example above

Check the documentation for more

like image 124
dimlucas Avatar answered Nov 17 '25 19:11

dimlucas


You can use array_search

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

array_search — Searches the array for a given value and returns the corresponding key if successful

Example:

$myArray = ["test" => 1, "test2" = 2, "test3" = 3];
$var = [1, 6, 7, 8, 9];

foreach ($var as $i) {
    $index = array_search($i, $myArray);

    if ($index === false) {
        echo "$i is not in the array";
    } else {
        echo "$i is in the array at index $index";
    }
}
like image 28
Jonathon Avatar answered Nov 17 '25 18:11

Jonathon



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!