0

我有两个数组一个单维和多维数组,多维它的逗号

分开的

$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++;
}
?>
4

3 回答 3

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

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

于 2013-05-01T19:48:02.973 回答
0

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

于 2013-05-01T19:53:40.663 回答
0

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

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

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

}

但是,这仅在$singledim是字符串时才有效。

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

$singleDimStr = implode(',' ,$singledim);
if($singleDimStr == $multi[1]) { 
}
于 2013-05-01T19:53:41.400 回答