Is it possible to search a string in array with keys or values
Like string
applesearch in -
array(
"a"=>"banana",
"apple"=>"fruit",
'b'=>"apple"
)
when apple is matched in array keys or values then return true otherwise false
when "apple" is matched in above array in keys or values then return true otherwise false
Short "one-liner":
$has_apple = key_exists('apple', $arr) || in_array('apple', $arr);
apple exists and is set to null. It's a bit of an edge case, but it might be better to use array_key_exists.<?php
$data = array("a"=>"banana","apple"=>"fruit",'b'=>"apple");
function key_or_value_exists($needle, $haystack) {
return array_key_exists($needle, $haystack) || in_array($needle, $haystack);
}
var_dump(key_or_value_exists('apple', $data));
var_dump(key_or_value_exists('banana', $data));
var_dump(key_or_value_exists('papaya', $data));
Output:
boolean true
boolean true
boolean false
You can use array_search() function to do -
Example : Search by Value
{Index Array}
$array = array(
'blue',
'red',
'green',
'red'
);
$key = array_search('green', $array); #$key = 2;
$key = array_search('red', $array); #$key = 1;
Example : Search by Value
{Associative Array}
$array = array(
'A'=>'blue',
'B'=>'red',
'C'=>'green',
'D'=>'red'
);
$key = array_search('green', $array); #$key = 'C';
$key = array_search('red', $array); #$key = 'D';
$key = array_search('NO', $array); #$key = false;
Isset() can do it.
$arr =array("a" => "banana","apple" => "fruit",'b' => "apple");
If(isset($arr["apple"]) || array_search("apple", $arr)){
Echo "true";
}Else{
Echo "false";
}
Edit noticed you needed in value too.
For that you can use array_search(needle, haystack)
If it is the bool value you are looking for you can also do:
$bool = (bool)isset($arr["apple"]) || array_search("apple", $arr);
Finding if a string is a key or a value in an array is as easy as calling array_key_exists() and in_array(). If one of them returns true then the string is used inside the array:
function findInArray(array $array, $item)
{
return array_key_exists($item, $array) || in_array($item, $array);
}
// Test
$input = array(
'a' => 'banana',
'apple' => 'fruit',
'b' => 'apple',
'pear' => 'fruit',
);
// 'banana' is a value in the array
printf("banana: %s\n", findInArray($input, 'banana') ? 'Yes' : 'No');
// 'apple' is both a key and a value in the array
printf("apple: %s\n", findInArray($input, 'apple') ? 'Yes' : 'No');
// 'pear' is a key in the array
printf("pear: %s\n", findInArray($input, 'pear') ? 'Yes' : 'No');
// 'mango' is not present in the array, either as key or value
printf("mango: %s\n", findInArray($input, 'mango') ? 'Yes' : 'No');
The output (as expected) is:
banana: Yes
apple: Yes
pear: Yes
mango: No
in_array(),isset(),array_key_exists()andarray_keys().