我有一个简单的数组 $ simpleArray ,里面有ids。
1
id="1"
2
id="3"
3
id="7"
我有另一个数组 $ complexArray ,里面有几个变量:
1
id="1"
color="blue"
size="7"
height="10"
2
id="2"
color="red"
size="64"
height="52"
3
id="3"
color="pink"
size="72"
height="39"
我想创建一个名为 $ mixedArray 的第三个数组,它是 $ complexArray 的一个子集,如果 id 在< em> $ simpleArray ,该行出现在 $ mixedArray 中。在上面的示例中,新数组将是:
$mixedArray =
1
id="1"
color="blue"
size="7"
height="10"
2
id="3"
color="pink"
size="72"
height="39"
我尝试了以下内容:
foreach ($simpleArray as $complexArray){
$mixedArray [] = array("id"=>$complexArray['id'],
"color"=>$complexArray['color'],
"size"=>$complexArray['size'],
"height"=>$complexArray['height']);
}
print_r($mixedArray);
答案 0 :(得分:0)
你可以这样做:
$mixedArray = array();
foreach ($complexArray as $element){
if(in_array($element['id'], $simpleArray)){
array_push($mixedArray, $element);
}
}
那么,它的作用是检查当前complexElement的id是否在simpleArray中,如果是,则将该元素推送到mixedArray
答案 1 :(得分:0)
尝试以下逻辑:
检查复杂数组中的简单数组ID,如果在mixedArray中存在赋值。为此你可以使用 in_array:如果在数组中找到值,则返回TRUE,否则返回。
foreach ($complexArray AS $complexArray1){
if (in_array($complexArray1['id'], $simpleArray) {
$mixedArray [] = $complexArray1;
}
}
print_r($mixedArray);
答案 2 :(得分:0)
试试这个,希望这会有所帮助:
function getMatching($id, $simpleArr){
$found = 0;
foreach($simpleArr as $v){
if($v['id'] == $id){
$found = 1;
break;
}
}
return $found;
}
$mixedArr = array();
foreach($complexArr as $ck=>$cv){
$match = getMatching($cv['id'], $simpleArr);
if($match){
$mixedArr[] = $cv;
}
}
echo "<pre>"; print_r($mixedArr);
答案 3 :(得分:0)
@ian你也可以使用带有in_array()条件的foreach()在array_column()的帮助下完成它,如下所示:
<?php
foreach($complexArray as $value){
if(in_array($value["id"], array_column($simpleArray, "id"))){
$mixedArray[] = $value;
}
}
echo "<pre>";
print_r($mixedArray);