概述将会发生什么,为了举例,我提供了电子邮件地址,名字和姓氏。如果用户想要将其包含在导入中,则每个列都有一个复选框。
在此示例中,Last Name
不应包括在内。因此,当我通过提交时,复选框的数据就像这样输出。
Array
(
[0] => Email Address
[1] => First Name
)
哪个是正确的,那么我想要发生是删除原始数据(多维数组)上的Last Name
,不幸的是,array_diff()不起作用,或者否则我可能做错了什么。
我有这两个数组
$mapping_import_value = $_SESSION['mapping_import_value'];
$arr_import_column = $_POST['import_column'];
映射导入值:多维数组
Array
(
[Email Address] => Array
(
[0] => email11@gmail.com
[1] => email12@gmail.com
[2] => email13@gmail.com
)
[First Name] => Array
(
[0] => Guy 11
[1] => Guy 12
[2] => Guy 13
)
[Last Name] => Array
(
[0] => Stand 11
[1] => Stand 12
[2] => Stand 13
)
)
然后
Arr导入列:单个数组
Array
(
[0] => Email Address
[1] => First Name
)
所以它就像是,2个数组将匹配,如果某些东西不匹配(姓氏),它将被删除,包括它的孩子。所以任何帮助都会很好。 :d
答案 0 :(得分:3)
您可以在$arr_import_column
上使用array_interesect_key()
和array_flip()
:
$x = array_intersect_key($mapping_import_value, array_flip($arr_import_column));
这基本上会返回$mapping_import_value
中$arr_import_column
中存在密钥的所有条目
答案 1 :(得分:2)
使用另一个变量并迭代如下。
$mapping_import_value_another = array();
foreach($arr_import_column as $v)
{
$mapping_import_value_another[$v] = $mapping_import_value[$v];
}
因此$mapping_import_value_another
只会选择列数据。
答案 2 :(得分:1)
我认为你必须建立一个功能来检查这个:
function areArraysEqual($arrImportColumn, $mappingImportValue)
{
foreach($mappingImportValue as $key=>$values)
{
if (!in_array($arrImportColumn,$key))
{
unset($mappingImportValue[$key]);
}
}
}
此功能将删除$mappingImportValue
$arrImportColumn
中的所有密钥