首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用多维数组PHP

如何使用多维数组PHP
EN

Stack Overflow用户
提问于 2021-04-15 08:19:35
回答 2查看 56关注 0票数 1

我想要的是:数组-1(产品db数组):

  • 产品id
  • 猫名

数组-2(类别db数组):

  • cat id
  • Cat name

如果Array-1: cat名称等于Array-2: cat名称在cat id下添加所有产品id

代码语言:javascript
复制
  //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;
    
    
            }
         }
    }

结果数组:

代码语言:javascript
复制
Array
(
    [45156381272] => Array
        (
            [0] => 44990952854
        )

    [45002415686] => Array
        (
            [0] => 45054787942
            [1] => 45056971448
            [2] => 45049917079
            [3] => 45056971449
        )

)

我想要的:

代码语言:javascript
复制
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
        )

)

我该怎么做?

EN

回答 2

Stack Overflow用户

发布于 2021-04-15 11:30:38

我的代码得到了想要的结果:

输入数据:

代码语言:javascript
复制
$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']];

代码:

我首先迭代类别数组,然后(内部)迭代产品数组。

代码语言:javascript
复制
<?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)

代码语言:javascript
复制
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, ), ), );
票数 0
EN

Stack Overflow用户

发布于 2021-04-15 08:30:51

在构建数组时,

  • 继续使用类别ID作为数组索引。也就是说,(IMHO)是在该ID下积累数据的最有效方法,否则,您必须始终使用当前记录的类别ID搜索数组中的项索引。

  • 为类别ID和产品ID添加了另一个维度:$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.开始对数组进行数字索引。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67104754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档