php在数组问题中

时间:2010-12-06 18:08:02

标签: php arrays

我这里有这个代码:

if (in_array('mystring', $entry->getCategories()->getValues()))
{
   ... //do somethingA

这很有效。

但是,我想允许某些东西运行,如果是“mystring”或“mYstring”或“MYSTRING”就是这种情况。

所以我尝试过这样:

if (in_array(array('OCC', 'OCc','Occ', 'occ', 'ocC','oCC', 'oCc', 'OcC'), $entry->getCategories()->getValues()))
{

但我没有得到任何回报。我在这里缺少什么?

非常感谢, MEM

3 个答案:

答案 0 :(得分:5)

in_array()无法比较两个数组的值,也无法比较不区分大小写的字符串。来自manual

  

如果 needle 是字符串,则以区分大小写的方式进行比较。

你可以尝试这个技巧。将strtolower()映射到categories数组,以便所有内容都是小写的,然后在数组中搜索小写字符串:

$cats_lower = array_map('strtolower', $entry->getCategories()->getValues());

if (in_array('mystring', $cats_lower))
{
    // Do something
}

答案 1 :(得分:1)

更具未来性的东西(尝试包括所有可能的长字符串组合),尝试:

if (in_array(strtolower('myStrIng'), array_map(strtolower, $entry->getCategories()->getValues()))) { 
    // do something
}

答案 2 :(得分:0)

foreach($entry->getCategories()->getValues() as $val) {
  if(preg_match("/$val/i", "occ") {
    somethingA();
  }
}