我正在尝试匹配两个数组,如果匹配则循环遍历数组值以在页面上显示它们。
这就是我的做法。
$productIDs = array(
'0' => array(
'product_id' => '565355',
'product_name' => 'stackPDF',
'product_file' => 'http://www.example.com/stack.pdf',
),
'1' => array(
'product_id' => '563423',
'product_name' => 'lostPDF',
'product_file' => 'http://www.example.com/lost.pdf',
),
'3' => array(
'product_id' => '4442',
'product_name' => 'No product',
'product_file' => '',
)
);
function getProducts($productIDs){
$getIDs = explode(',', $_GET['product_id']);
$intersection = array();
foreach($productIDs as $items)
{
$intersection[] = array_intersect($items, $getIDs);
}
if(!empty($intersection)){
return $intersection;
} else {
echo "There are no products available!";
}
}
$getProducts = getProducts($productIDs);
function getDownloads($getProducts){
foreach($getProducts as $item){
print_r($item);
}
}
$getDownloads = getDownloads($getProducts);
在getProducts()函数中,我正在检查标头中的product_id
是否与$ productID中的任何product_id
匹配,以仅显示其中的product_id
的可用链接标题。
$ getProducts变量具有已在数组中匹配的可用product_file
,并且在$ getDownloads中我试图“如果id可用,则循环并显示{{1}}参数值多维数组“但我似乎无法循环通过它,而是我无法弄清楚如何匹配它/返回值。
答案 0 :(得分:0)
array_filter($array, function($v) use($id){ return $v['product_id'] == $id;})
答案 1 :(得分:0)
我能想到的最简单的方法是:
$item_exists = array_filter($productIDs, function($item) use ($check) {
return md5(json_encode($item)) == md5(json_encode($check));
});
json_encode
会将数组序列化为字符串,而md5
会创建一个比较键,如果它们相等,它将被插入$item_exists
数组中。
编辑:我在考虑比较产品对象,但我猜您只需要ID,您可以使用以下内容:
$existing_values = array_filter($productIDs, function($p)use($getIDs){
return in_array($p["product_id"], $getIDs);
});