[英]removing a value from an array if it does not equal a value in another array in PHP
我有这样的数组
Array
(
[0] => Array
(
[0] => 83
[1] => 82
[2] => 81
)
[1] => Array
(
[0] => 81
[1] => 82
[2] => 83
[3] => 100
[4] => 101
[5] => 102
[6] => 103
[7] => 104
[8] => 105
)
)
我想从第一个数组中删除任何不等于该数组的值
Array
(
[0] => 83
[1] => 82
[2] => 81
)
但我想保持与第一个数组相同的结构。 所以我最终会遇到这样的事情
Array
(
[0] => Array
(
[0] => 83
[1] => 82
[2] => 81
)
[1] => Array
(
[0] => 81
[1] => 82
[2] => 83
)
)
实现此目标的最佳方法是什么?
$data = array( /* your data you want to check (first big array) */ );
$test = array( 83, 82, 81 );
foreach ( $data as $key => $value ) {
$intersect = array_intersect($value, $test);
if ( $intersect != $test ) {
unset($data[$key]);
} else {
$data[$key] = $intersect;
}
}
如果$array
是您的起始数组,而$matches
是您要匹配的值的数组;
foreach ($array as $key => $subarray) {
foreach ($subarray as $subsubarray) {
foreach ($matches as $match) {
if ($subsubarray == $match) {
$finalarr[$key][] = $subsubarray;
}
}
}
}
$finalarr
将是您想要的结果。
您可以始终使用array_intersect函数将数组设置为第一个和第二个数组的交集。
<?php
$array[1] = array_intersect($array[0], $array[1]);
?>
$temp = array
(
0 => array
(
0 => 83,
1 => 82,
2 => 81
),
1 => array
(
0 => 81,
1 => 82,
2 => 83,
3 => 100,
4 => 101,
5 => 102,
6 => 103,
7 => 104,
8 => 105
)
);
for($i=0,$tot = count($temp[1]);$i<$tot;$i++)
{
if(!in_array($temp[1][$i],$temp[0]))
{
unset($temp[1][$i]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.