我有一个类似的数组:
array(2) {
[0]=>
array(2) {
["code"]=>
string(2) "en"
["name"]=>
string(7) "English"
}
[1]=>
array(2) {
["code"]=>
string(2) "bg"
["name"]=>
string(9) "Bulgarian"
}
}
如何检查字符串Bulgarian是否是上述数组的一部分,或者如果lang代码'en'是数组的一部分?如果我不必使用foreach遍历整个数组并将字符串与每个元素['code']或元素['name']进行比较,那就太棒了。
答案 0 :(得分:4)
// $type could be code or name
function check_in_array($arr, $value, $type = "code") {
return count(array_filter($arr, function($var) use ($type, $value) {
return $var[$type] === $value;
})) !== 0;
}
答案 1 :(得分:1)
我知道我的代码使用了foreach但很容易理解和使用。
$language=array();
$language[0]['code']='en';
$language[0]['name']='English';
$language[1]['code']='bg';
$language[1]['name']='Bulgaria';
var_dump(my_in_array('Bulgaria', $language));
function my_in_array($search, $array) {
$in_keys = array();
foreach($array as $key => $value){
if(in_array($search, $value)){
$in_keys[]=$key;
}
}
if(count($in_keys) > 0){
return $in_keys;
}else{
return false;
}
}
答案 2 :(得分:0)
您可以使用此功能进行递归搜索
function in_arrayr($needle, $haystack) {
foreach ($haystack as $v) {
if ($needle == $v) return true;
elseif (is_array($v)) return in_array($needle, $v);
}
return false;
}
或者您可以在数组上使用json_encode并搜索子字符串的出现:)
答案 3 :(得分:0)
我遇到了类似的问题,所以我创建了这个函数,它就像in_array,但它可以递归地在数组中搜索数组。我认为这是正确的,但我没有在很多情况下进行测试。 (对不起我的英语我是法国人)
function in_arrayr($needle, $haystack) {
if(is_array($haystack)){
foreach($haystack as $elem){
$a = in_arrayr($needle,$elem)||$a;
}
}
else{
$a = (($needle == $haystack)? true: false);
}
return $a;
}