繁体   English   中英

如果一个值不等于PHP中另一个数组中的值,则从该数组中删除一个值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM