使用此代码检查数组中是否存在值,但有时数组可能包含大写的值。我的查找值始终为小写。我无法控制数组数据,因为它是从数据库动态生成的,所以我需要一个忽略大小写的解决方案(大写/小写)。
如果数组中存在查找值,我希望它匹配,无论区分大小写。
if (in_array('lookupvalue', $array)) {
// do something
}
var_dump($url);
的输出:
string(17) "www.paypal.com.au"
var_dump($sans);
的输出:
array(52) {
[0]=>
string(13) "WWW.PAYPAL.AT"
[1]=>
string(13) "WWW.PAYPAL.BE"
[2]=>
string(13) "WWW.PAYPAL.CA"
[3]=>
string(13) "WWW.PAYPAL.CH"
[4]=>
string(13) "WWW.PAYPAL.CL"
[5]=>
string(13) "WWW.PAYPAL.CN"
[6]=>
string(16) "WWW.PAYPAL.CO.ID"
[7]=>
string(16) "WWW.PAYPAL.CO.IL"
[8]=>
string(16) "WWW.PAYPAL.CO.IN"
[9]=>
string(19) "WWW.PAYPAL-MENA.COM"
[10]=>
string(16) "WWW.PAYPAL.CO.NZ"
[11]=>
string(16) "WWW.PAYPAL.CO.TH"
[12]=>
string(16) "WWW.PAYPAL.CO.UK"
[13]=>
string(16) "WWW.PAYPAL.CO.ZA"
[14]=>
string(17) "WWW.PAYPAL.COM.AR"
[15]=>
string(17) "WWW.PAYPAL.COM.AU"
[16]=>
string(17) "WWW.PAYPAL.COM.BR"
[17]=>
string(17) "WWW.PAYPAL.COM.HK"
[18]=>
string(17) "WWW.PAYPAL.COM.MX"
[19]=>
string(17) "WWW.PAYPAL.COM.MY"
[20]=>
string(17) "WWW.PAYPAL.COM.SA"
[21]=>
string(17) "WWW.PAYPAL.COM.SG"
[22]=>
string(17) "WWW.PAYPAL.COM.TR"
[23]=>
string(17) "WWW.PAYPAL.COM.TW"
[24]=>
string(17) "WWW.PAYPAL.COM.VE"
[25]=>
string(13) "WWW.PAYPAL.DE"
[26]=>
string(13) "WWW.PAYPAL.DK"
[27]=>
string(13) "WWW.PAYPAL.ES"
[28]=>
string(13) "WWW.PAYPAL.EU"
[29]=>
string(13) "WWW.PAYPAL.FI"
[30]=>
string(13) "WWW.PAYPAL.FR"
[31]=>
string(13) "WWW.PAYPAL.IE"
[32]=>
string(13) "WWW.PAYPAL.IT"
[33]=>
string(13) "WWW.PAYPAL.JP"
[34]=>
string(13) "WWW.PAYPAL.LU"
[35]=>
string(13) "WWW.PAYPAL.NL"
[36]=>
string(13) "WWW.PAYPAL.NO"
[37]=>
string(13) "WWW.PAYPAL.PH"
[38]=>
string(13) "WWW.PAYPAL.PL"
[39]=>
string(13) "WWW.PAYPAL.PT"
[40]=>
string(13) "WWW.PAYPAL.RU"
[41]=>
string(13) "WWW.PAYPAL.SE"
[42]=>
string(13) "WWW.PAYPAL.VN"
[43]=>
string(21) "WWW.THEPAYPALBLOG.COM"
[44]=>
string(25) "WWW.PAYPAL-DEUTSCHLAND.DE"
[45]=>
string(13) "WWW.PAYPAL.CO"
[46]=>
string(17) "WWW.PAYPAL.COM.PE"
[47]=>
string(17) "WWW.PAYPAL.COM.PT"
[48]=>
string(20) "WWW.PAYPAL-FRANCE.FR"
[49]=>
string(20) "WWW.PAYPAL-LATAM.COM"
[50]=>
string(23) "WWW.PAYPAL-MARKETING.PL"
[51]=>
string(15) "DEMO.PAYPAL.COM"
}
答案 0 :(得分:4)
如果您确定搜索词始终为小写,那么也可以通过使用strtolower()
循环遍历所有值并使用if (in_array('lookupvalue', array_map("strtolower", $array))) {
// do something
}
将它们放在小写中来将数组放在小写中,例如
String xmlTag = "http://www.facebook.com/profile.asp?id=123456789";
String regexId = "\\?id=(\\d+)";
final Pattern patternId = Pattern.compile(regexId);
final Matcher matcherId = patternId.matcher(xmlTag);
System.out.println("found id = " + matcherId.find());
System.out.println("id = " + matcherId.group(1));
答案 1 :(得分:3)
您可以使用array_uintersect()
:
<?php
$haystack = [
'apple',
'banana',
'cherry',
'PineApple',
'PEAR',
];
echo (
array_uintersect(['pineapple'], $haystack, 'strcasecmp')
) ? "found\n" : "not found\n";
它通过用户定义的函数计算两个数组的交集。你喂它两个阵列,一个拿着你的针,一个是你的大海捞针。作为比较函数,您只需使用php的strcasecmp()
函数。
所以最后你的条件是单线:
if ([] === array_uintersect([$needle], $haystack, 'strcasecmp'))
其中,由于这是php,可以简化为:
if (array_uintersect([$needle], $haystack, 'strcasecmp'))
显然你也可以为此定义一个静态函数:
function in_array_icase($needle, &$haystack) {
return array_uintersect([$needle], $haystack, 'strcasecmp');
}
$jewelry = ['ring', 'bracelet', 'TaTToo', 'chain'];
if (in_array_icase('tattoo', $jewelry))
echo "Yea!";
答案 2 :(得分:2)
如果@ Rizier array_map
对您不利(不知道为什么),您可以使用preg_grep功能。
$array = array('Lookupvalue', 'second', 'third');
if (preg_grep('/^lookupVALUE$/i', $array)) {
echo 'exists';
}
array_map
的通知:
也许在Rizier的解决方案中,在第一个参数中缺少strtolower
(如果你可以用大写字母获取它),以使其完全不区分大小写,
if (in_array(strtolower('LookupVALUE'), array_map('strtolower', $array))) {
echo 'exists';
}
答案 3 :(得分:0)
function searchInArray($text, $array) {
if (in_array(strtolower($text), array_map("strtolower", $array))) {
return true;
}
return false;
}