如果值存在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?

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

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";
    }
}
<?php

//The values in this arrays contains the values that should exist in the data array
$var = [1,6,7,8,9];

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

if(count(array_intersect_key(array_flip($myArray), $var)) === count($var)) {
    //All required values exist!              
}

Dnt need to use 2loops.
use 'array_intersect'.
'array_intersect' will return common value present in both the sets of array
if you want Match keys then use 'array_intersect_key'

$myArray = array("test" => 1, "test2" => 2, "test3" => 3);

$var = array(1,6,7,8,9);
$intersect=array_intersect($myArray, $var);

var_dump($intersect);

output:

array(1) {
    ["test"]=> int(1) }

use array_search()

foreach ($var as $row) 
{
   $index_val = array_search($row, $myArray);

  if ($index_val === false) 
  {

     echo "not present";
  } 
 else
 {
     echo "presented";
  }
}
    <?php 
dont missed => wehere "test2" & "test3"
    $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";
        }
    }
    ?>