我有一个包含一些值的数组,我需要检查某些值是否不在这个数组中。
这是第一个名为“$arr_cls”的数组。
Array (
[0] => Array (
[0] => Paris SG
[1] => Brest
[2] => Monaco
[3] => Nizza
[4] => Lilla
[5] => Lens )
[1] => Array (
[0] => Marsiglia
[1] => Rennes
[2] => Reims
[3] => Lione
[4] => Tolosa
[5] => Strasburgo )
[2] => Array (
[0] => Le Havre
[1] => Montpellier
[2] => Lorient
[3] => Nantes
[4] => Metz
[5] => Clermont )
)
第二个数组:名称为“$part_t2”
Array (
[0] => Sturm Graz
[1] => Rennes
[2] => Sturm Graz
[3] => Reims
[4] => Tolosa
[5] => Le Havre
[6] => Paris SG
[7] => Lione
[8] => Clermont
[9] => Montpellier
[10] => Lorient
[11] => Strasburgo )
我需要从第二个数组中删除第一个数组中不存在的值,在本例中为 value[0] 和 value[2] (Sturm Graz)。
我尝试了这个但不起作用。
$part_t2_2=array();
foreach($part_t2 as $value){
if (in_array($value,$arr_cls[0],true) or in_array($value,$arr_cls[1],true) or in_array($value,$arr_cls[2],true)){
$part_t2_2[]=$value;
}
}
你是这个意思吗? 您还可以使用 count 和 for 函数
$arra2=$arr_cls;
$arra1=$part_t2_2;
$final_array=null;
foreach($arra2 as $no => $arra22)
{
foreach($arra22 as $el22)
{
foreach($arra1 as $el1)
{
if($el22===$el1)
{
$final_array[]=$el22;
}
}
}
}
var_dump($final_array);
其中一种方法是首先展平嵌套数组,然后使用 in_array 和循环来完成这项工作
我们可以使用这个函数来展平嵌套数组
function flatten(array $array) {
$return = array();
array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
return $return;
}
然后循环它,使用 in_array 检查并构建 $part_t2_2
foreach($part_t2 as $value){
if (in_array($value, $arr_cls_new)) {
array_push($part_t2_2, $value);
}
}
所以,整个完整的代码将是
<?php
function flatten(array $array) {
$return = array();
array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
return $return;
}
$array1=array(
"Paris SG",
"Brest",
"Monaco",
"Nizza",
"Lilla",
"Lens");
$array2=array(
"Marsiglia",
"Rennes",
"Reims",
"Lione",
"Tolosa",
"Strasburgo");
$array3=array(
"Le Havre",
"Montpellier",
"Lorient",
"Nantes",
"Metz",
"Clermont");
$arr_cls=array();
// build arr_cls below
array_push($arr_cls, $array1, $array2, $array3);
// flatten array now
$arr_cls_new=flatten($arr_cls);
//build part_t2 below
$part_t2=array(
"Sturm Graz",
"Rennes",
"Sturm Graz",
"Reims",
"Tolosa",
"Le Havre",
"Paris SG",
"Lione",
"Clermont",
"Montpellier",
"Lorient",
"Strasburgo");
//declare a blank array
$part_t2_2=array();
// loop over it and only if an element in part_t2 exists in arr_cls_new (flattend array), put into part_t2_2
foreach($part_t2 as $value){
if (in_array($value, $arr_cls_new)) {
array_push($part_t2_2, $value);
}
}
var_dump($part_t2_2);
参见演示