2

这是数组

$country_codes_with_euro_currency = array( 'AT', 'BE', 'CY', 'DE', 'EE', 'GR', 'ES', 'FI', 'FR', 'IE', 'IT', 'LU', 'MT', 'NL', 'PT', 'SI', 'SK' );

例如$result = 'at';

然后

if ( in_array(trim($result), $country_codes_with_euro_currency) ) {
echo $currency_code = 'EUR';
}

输出什么都不是。需要$result = 'AT';

所以想同时检查大写和小写,但不想手动重写小写数组。

创建了这样的代码

 $country_codes_with_euro_currency = array_merge( $country_codes_with_euro_currency, (array_map('strtolower', $country_codes_with_euro_currency)) );

有没有更好(更短)的解决方案?

...关于标记为重复只想通知我不问如何将大写转换为小写。在我的代码中已经使用了strtolower. 我展示了我如何获得结果的方式。并要求更好的方法来获得相同的结果

最终解决方案

实际上对于这种情况,一个简单的解决方案。

保持$country_codes_with_euro_currency原样(大写)。

简单地说$result = strtoupper(trim($result));

接着if ( in_array(trim($result), $country_codes_with_euro_currency) )

拜托,PHP 在哪里包含toupper 和 tolower 函数?是这样的答案(标记为重复)吗?我找不到...

4

1 回答 1

2

尝试strtoupperstrtolower喜欢

if ( in_array(strtoupper(trim($result)), $country_codes_with_euro_currency)) {
    echo $currency_code = 'EUR';
}

如果要检查小写字母,则可以OR使用条件

in_array(strtolower(trim($result)), $country_codes_with_euro_currency)

所以它应该像

if ( in_array(strtoupper(trim($result)), $country_codes_with_euro_currency) ||
     in_array(strtolower(trim($result)), $country_codes_with_euro_currency)) { 
       echo $currency_code = 'EUR'; 
}

正如JimL所说,您可以在上或下更改结果和数组,例如

$converted_array = array_map("strtoupper", $country_codes_with_euro_currency);
if ( in_array(strtoupper(trim($result)),$converted_array) ) 
{ 
    echo $currency_code = 'EUR'; 
}
于 2013-08-01T06:29:27.323 回答