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