我有一个 PHP 数组main_array,在我的模板文件中我有一个访问这个数组的函数。在该函数中,我有另一个函数可以main_array根据实际前端页面上查询的任何键获取和显示值。main_array我使用它来获取基于 URL 或页面 ID 或其他查询的元数据。示例:在前端页面中,我有$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");}这很好用,它将使用两组标签创建两个数组。我遇到的问题是合并由查找函数创建的数组,这样我就可以获得唯一值 - 我不希望标签“木头”出现两次。我已经搞砸了array_merge一段时间,但它没有按预期输出。
1 回答

慕田峪9158850
TA贡献1794条经验 获得超7个赞
我想你很接近了,只是少了几步
$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;
}
- 1 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消