我有一个PHP数组main_array
,在我的模板文件中,我有一个访问此数组的函数。在该函数中,我还有另一个函数,该函数可以根据实际前端页面上查询的任何键来获取并显示main_array
值。我使用它来获取基于页面或其他查询的URL或ID的main_array
中存储的元数据。
示例:在前端页面中,我有
$prod_id = [
["query" => "prod-1"],
["query" => "prod-2"]
];
在main_array
中,我有
$main_array = [
["name" => "prod-1", "tags" => "lilac, rose, wood"],
["name" => "prod-2", "tags" => "wood, plastic"]
];
在模板文件中,我有一个循环和查找功能,该功能获取相关产品的标签并为每个产品创建一个数组
function lookup($lookup_value, $lookup_array, $lookup_column, $result_column) {
foreach ($lookup_array as $item) {
if ($item[$lookup_column] == $lookup_value) {
return $item[$result_column];
}
}
return false;
}
foreach ($prod_id as $tags) {
$result = lookup($tags["query"],$main_array,"name","tags");
}
这很好,它将使用两组标签创建两个数组。我遇到的问题是合并由查找功能创建的数组,这样我就可以获得唯一的值-我不希望标签“ wood”出现两次。我已经将array_merge
弄乱了一段时间,但没有按预期输出。
我认为您很亲密,只是缺少了几个步骤
$unique_tags = [];
foreach ($prod_id as $tags) {
$result = lookup($tags["query"],$main_array,"name","tags");
// `tags` is a string, so explode it to get an array
$result_as_array = explode( ',', $result );
// merge like you mentioned
$merged_array = array_merge( $unique_tags, $result_as_array );
// make sure there's no duplicate entries
$merged_array_no_duplicates = array_unique( $merged_array );
// re-assign to the array where you want to store all tags
$unique_tags = $merged_array_no_duplicates;
}