我有一堆来自$search和$data变量的数组数据,如下所示:
$data = array(
array(1, 2, 3),
array(1, 2, 3, 4, 7, 13)
);
$search = array(
array(1, 2),
array(1, 3),
array(6, 13),
array(7, 13)
);
$result = array();
我想要做的是,如果$search中的每一对(例如:1和2)数组数据与$data变量中的所有数据匹配,它将计算有多少数据匹配(示例:1和2匹配$data [0]和$data [1]所以结果必须是2).然后根据$search中的键将计数结果保存到变量$result中.
这是我要找的结果:
$result = array(
0 => 2,
1 => 2,
2 => 0
3 => 1
);
这是我的代码:
for ($i=0; $i<count($search); $i++) {
for ($j=0; $j<count($data); $j++) {
if (count(array_intersect($search[$i], $data[$j])) > 1) {
array_push($result[$i], "1");
}
}
}
正如我上面的实验,如果我将计数结果保存到$result变量,它只是给我一个警告:array_push()期望参数1是数组.但是如果我尝试使用array_push将计数结果保存到$search变量,它会给我这样的结果:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 1
[3] => 1
)
[1] => Array
(
[0] => 1
[1] => 3
[2] => 1
[3] => 1
)
[2] => Array
(
[0] => 6
[1] => 13
)
[3] => Array
(
[0] => 7
[1] => 13
[2] => 1
)
)
结果接近我想要的,但仍然不像我想要的那样.我真的不知道如何做到这一点.
解决方法:
你得到一个错误,因为$result [$i]不是一个数组,array_push期望一个数组作为输入.我让它使用以下代码:
foreach($search as $index => $searchArray) {
$result[$index] = 0;
foreach($data as $dataArray) {
if (count(array_intersect($searchArray, $dataArray)) > 1) {
$result[$index]++;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。