具有单维和多维的in_array

时间:2013-05-01 19:43:37

标签: php

我有两个数组,一个维度和一个多维数组,多维数字是逗号

分离

$singledim =Array
(
    [0] => 333
    [1] => 673
    [2] => 434
    [3] => 67

)

$multidim = Array
(
    [0] => Array
        (
            [0] => 22
            [1] => 3336,673,34,342,432,23,323,434,765675765,7657567
        )

    [1] => Array
        (
            [0] => 24
            [1] => 2424,10
        )

    [2] => Array
        (
            [0] => 28
            [1] => 23,12,13,14,15,16
        )
............
}

我想使用in_array检查单维数组值是否存在.Belwo是我试过的那个..

<?
foreach($multidim  as $multi)
{
  if(in_array($singledim,$multi[1])
  {

  }
  $i++;
}
?>

3 个答案:

答案 0 :(得分:1)

foreach($multidim as $multi){
    foreach($singledim as $single){
        $temp_array = explode(',',$mutli[1]);
        if(in_array($single, $temp_array)){
            // do stuff
        }
    }
}

如果传递一个数组,那么相同的数组必须在haystack中以完全相同的方式存在才能匹配。

答案 1 :(得分:0)

您不希望in_array()。你想要strpos(...) !== false。并注意您将受到误报。例如如果您正在搜索1,那么您的1221等等将会错误匹配。您的结构需要进行规范化,[1]子元素中的每个值都应该是其OWN数组元素。

答案 2 :(得分:0)

$multi[1]不是数组。它是逗号分隔的字符串。

您可以使用explode从字符串创建数组:

$vals = explode(',' ,$multi[1]);
if(in_array($singledim, $vals)
{

}

但是,只有在$singledim为字符串时才会有效。

如注释中所述,您正在检查整个数组是否与第二个数组中的字符串相同。您可以将第一个数组转换为字符串,然后检查它们是否相等:

$singleDimStr = implode(',' ,$singledim);
if($singleDimStr == $multi[1]) { 
}