我有两个数组,一个维度和一个多维数组,多维数字是逗号
分离
$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++;
}
?>
答案 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
,那么您的12
,21
等等将会错误匹配。您的结构需要进行规范化,[1]
子元素中的每个值都应该是其OWN数组元素。
答案 2 :(得分:0)
$multi[1]
不是数组。它是逗号分隔的字符串。
您可以使用explode
从字符串创建数组:
$vals = explode(',' ,$multi[1]);
if(in_array($singledim, $vals)
{
}
但是,只有在$singledim
为字符串时才会有效。
如注释中所述,您正在检查整个数组是否与第二个数组中的字符串相同。您可以将第一个数组转换为字符串,然后检查它们是否相等:
$singleDimStr = implode(',' ,$singledim);
if($singleDimStr == $multi[1]) {
}