php 一个多维数组根据一维数组筛选数据,得到新数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 一个多维数组根据一维数组筛选数据,得到新数组相关的知识,希望对你有一定的参考价值。

数组A:
Array( [BL001] => Array([0] => 'A14257',[1] => 'B17548') [CDF002] => Array([0] => 'A14257',[1] => 'C48751')
[FGE453] => Array([0] => 'DF5533' ,[1] => 'GR6445',[2] => 'GH5544')
[GEN001] => Array([0] => 'NT7532' ,[1] => 'DE9342',[2] => 'C48751'))
数组B:
Array([0] => 'A14257',[1] => 'E453T4',[2] => 'Y64344',[3] => 'FG4809',[4] => 'C48751',[5] => 'H4443R')
如果数组A含有数组B的数据就生成新的数组,不包含的话删除,结果是这样:
Array( [BL001] => Array([0] => 'A14257') [CDF002] => Array([0] => 'A14257',[1] => 'C48751') [GEN001] => Array([0] => 'C48751'))

<?php

// 定义数组 1
$arr1 = array(
    'BL001' => array(
        '0' => 'A14257',
        '1' => 'B17548'
    ),
    'CDF002' => array(
        '0' => 'A14257',
        '1' => 'C48751'
    ),
    'FGE453' => array(
        '0' => 'DF5533',
        '1' => 'GR6445',
        '2' => 'GH5544'
    ),
    'GEN001' => array(
        '0' => 'NT7532',
        '1' => 'DE9342',
        '2' => 'C48751'
    )
);

// 定义数组 2
$arr2 = array(
    'A14257',
    'E453T4',
    'Y64344',
    'FG4809',
    'C48751',
    'H4443R'
);

// 定义结果数组 $result
$result = array();

foreach ( $arr1 as $k => $v ) // 遍历数组 1
    foreach ( $v as $s ) // 遍历数组 1 第 2 维
        if ( in_array( $s, $arr2 ) )  // 包含数据 2 的任意值
            if ( ! isset( $result[$k] ) || ! is_array( $result[$k] ) )
                $result[$k] = array();
            $result[$k][] = $s; // 添加到结果数组
        

// 输出测试结果
print_r( $result );
/*
Array
(
    [BL001] => Array
        (
            [0] => A14257
        )

    [CDF002] => Array
        (
            [0] => A14257
            [1] => C48751
        )

    [GEN001] => Array
        (
            [0] => C48751
        )

)
*/

参考技术A <?php

$a = array(
'BL001'=>array('A14257','B17548'),
'CDF002'=>array('A14257','C48751'),
'FGE453'=>array('DF5533','GR6445','GH5544'),
'GEN001'=>array('NT7532','DE9342','C48751'),
);

$b = array('A14257','E453T4','Y64344','FG4809','C48751','H4443R');

foreach($a as $k=>$v)
$t = array_intersect ($v, $b);
if($t)
$c[$k] = $t;



print_r($c);
?>

本回答被提问者采纳
参考技术B <?php
$a = array(
'BL001' => array('A14257','B17548'),
'CDF002' => array('A14257','C48751'),
'FGE453' => array('DF5533','GR6445','GH5544'),
'GEN001' => array('NT7532','DE9342','C48751')
);
$b = array('A14257','E453T4','Y64344','FG4809','C48751','H4443R');
$c = array();
foreach($b as $k=>$v)
    foreach($a as $key=>$val)
        if(in_array($v,$val))
            $c[$key][] = $v;
        
    

echo '<pre>';
var_dump($c);
?>

numpy多维数组元素筛选

导读

在python数据操作中我们经常会用到numpy,通过numpy来操作数组非常的方便和快速

元素筛选

  • 一维数组
    筛选出数组中等于某个值的数组
import numpy as np

a = np.array([1,2,3,4,2,4,5])
#筛选出元素
print(a[a == 2])
#筛选出元素的下标
print(np.where(a == 2))
  • 多维数组
    筛选的目标元素是一个多维数组,这时候我们就需要使用allany函数
import numpy as np

a = np.array([[0,0],[1,1],[2,2],[0,0],[3,4],[1,5]])
#目标元素
target = np.array([0,0])
#筛选出元素
print(a[(a==target).all(axis=1)])

#目标元素
target = np.array([1,2])
#筛选出第一列包含1或者第二列包含2的元素
print(a[(a==target).any(axis=1)])

以上是关于php 一个多维数组根据一维数组筛选数据,得到新数组的主要内容,如果未能解决你的问题,请参考以下文章

numpy多维数组元素筛选

PHP多维数组转一维数组

如何用matlab筛选一个数组中大于某值的数

php中一维或多维数组去除重复项

在php中将一维数组转换为多维数组[重复]

php 多维数组的差集以及将多维数组元素返回成一维数组