我想要的是:数组-1(产品db数组):
数组-2(类别db数组):
如果Array-1: cat名称等于Array-2: cat名称在cat id下添加所有产品id
//this foreach is loop to products
foreach($objects as $object) {
//get cat name from product db
$cat_name_product = $object['values']['17'];
// this foreach is loop to cat db
foreach($cat_db as $cat_object) {
// get cat name from cat db
$cat_name_cat_table = $cat_object['values'][2];
// if cat from product DB is equal to cat name from cat DB
if($cat_name_product == $cat_name_cat_table){
$cat_name_product_id = $object['id'];
$cat_name_db_id = $cat_object['id'];
// Add products ids to a specfic row id from cat
$cat_db_row[$cat_name_db_id][] = $cat_name_product_id;
}
}
}结果数组:
Array
(
[45156381272] => Array
(
[0] => 44990952854
)
[45002415686] => Array
(
[0] => 45054787942
[1] => 45056971448
[2] => 45049917079
[3] => 45056971449
)
)我想要的:
Array
(
[0] => (
[cat_id] => 45156381272
[product_ids] => Array
(
[0] => 44990952854
)
)
[1] =>
[cat_id] => 45156381272
[product_ids] => Array
(
[0] => 45054787942
[1] => 45056971448
[2] => 45049917079
[3] => 45056971449
)
)我该怎么做?
发布于 2021-04-15 11:30:38
我的代码得到了想要的结果:
输入数据:
$arrayProducts = [["Cat_name" => 'cat example 1', "product_id" => 44990952854],
["Cat_name" => 'cat example 2', "product_id" => 44990952854],
["Cat_name" => 'cat example 2', "product_id" => 44990952854],
["Cat_name" => 'cat example 2', "product_id" => 44990952854],
["Cat_name" => 'cat example 2', "product_id" => 44990952854]];
$arrayCategories = [["cat_id" => 45156381272, "Cat_name" => 'cat example 1'],
["cat_id" => 45002415686, "Cat_name" => 'cat example 2']];代码:
我首先迭代类别数组,然后(内部)迭代产品数组。
<?php
$resultArray = array();
foreach($arrayCategories as $key => $element2) {
$resultArray[$key] = array("cat_id" => $element2["cat_id"], "products_ids" => array());
foreach($arrayProducts as $element1) {
if($element1["Cat_name"] == $element2["Cat_name"]) {
$resultArray[$key]["products_ids"][] = $element1["product_id"];
}
}
}
?>输出($resultArray)
array ( 0 => array ( 'cat_id' => 45156381272, 'products_ids' => array ( 0 => 44990952854, ), ), 1 => array ( 'cat_id' => 45002415686, 'products_ids' => array ( 0 => 44990952854, 1 => 44990952854, 2 => 44990952854, 3 => 44990952854, ), ), );发布于 2021-04-15 08:30:51
在构建数组时,
。
$cat_db_row[$cat_name_db_id]['cat_id'] = $cat_name_db_id;$cat_db_row[$cat_name_db_id]['product_ids'][] = $cat_name_product_id;
(从技术上讲,第一行会一次又一次地覆盖$cat_db_row[$cat_name_db_id]['cat_id'] --但由于它总是具有相同的类别ID值,所以这并不重要。您可以先检查$cat_db_row[$cat_name_db_id]['cat_id']是否已经设置,但这没有什么意义。)。
$cat_db_row = array_values($cat_db_row);
这将丢弃所有现有(顶级)数组键,并从0.开始对数组进行数字索引。
https://stackoverflow.com/questions/67104754
复制相似问题