php - 将数组与数组组进行比较

标签 php mysql arrays

我正在尝试将一个数组与另一个数组进行比较。

$dropship_array = array();
$dropship_query = tep_db_query("select id, email from drop_shippers");
  while ($dropship = tep_db_fetch_array($dropship_query)) {
    $dropship_array[] = array('id' => $dropship['id'],
                            'email' => $dropship['email']);
  }

现在,$dropship_array[] 包含:

Array ( 
 [0] => Array ( 
  [id] => 0
  [email] => none 
 ) 

 [1] => Array ( 
  [id] => 2 
  [email] => dropshipper1@gmail.com 
 ) 

 [2] => Array ( 
  [id] => 5 
  [email] => dropshipper2@gmail.com 
 )

 [2] => Array ( 
  [id] => 10 
  [email] => dropshipper3@gmail.com 
 ) 
)

现在,我需要将上面的数组 (dropship_array['id']) 与下面的数组 (products_array['dsid']) 进行比较。 products_array[] 数组已被拆分,以便每个单独的数组根据每个 [dsid] 分组在一起。因此,每当在一组产品和代发货 ID 之间找到匹配项时,就需要执行一个函数。

$products_array = array();
$products_query = tep_db_query("select products_id, products_name, drop_ship_id from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$orders['orders_id'] . "' order by products_name");
while ($products = tep_db_fetch_array($products_query)) {
  $products_array[] = array('id' => $products['products_id'],
                            'text' => $products['products_name'],
            'dsid' => $products['drop_ship_id']);
}

Array ( 
   [0] => Array ( 
      [0] => Array ( 
        [id] => 793 
        [text] => Gun Dog Training Book 
        [dsid] => 8 
      ) 
   ) 

   [1] => Array ( 
      [0] => Array ( 
       [id] => 789 
       [text] => Top Dog II Training DVD Video 
       [dsid] => 5 
      ) 

      [1] => Array ( 
       [id] => 237 
       [text] => Tri-Tronics Retriever Training Book 
       [dsid] => 5 
      ) 
   ) 
)

这需要 foreach 函数吗?

最佳答案

<?php
$one = array(
            '0' => array(
                'id' => '0',
                'email' => 'none'
            ),
            '1' => array(
                'id' => '1',
                'email' => 'none'
            ),
            '2' => array(
                'id' => '2',
                'email' => 'none'
            ),
            '3' => array(
                'id' => '3',
                'email' => 'none'
            )
        );

        $two = array(
            '0' => array(
                '0' => array(
                    'id' => '793',
                    'text' => 'derp',
                    'dsid' => '8'
                )
            ),
            '1' => array(
                '0' => array(
                    'id' => '793',
                    'text' => 'derp',
                    'dsid' => '8'
                ),
                '1' => array(
                    'id' => '793',
                    'text' => 'derp',
                    'dsid' => '3'
                )
            ),
        );

        foreach($one as $item) {
            foreach($two as $compare) {
                if(is_array($compare)) {
                    foreach($compare as $multicompare) {
                        if($multicompare['dsid'] == $item['id']) {
                            // Perform function
                        }
                    }
                  } 
                }
            }
        }
?>

分解:

  • 第一个 foreach() 循环遍历 drop_shippers 表中的第一个数组。
  • 第二个 foreach() 循环遍历下一个数组并检查该项目是否为数组,如果是,则将 dsidid 进行比较> 从第一个数组开始。

关于php - 将数组与数组组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826531/

相关文章:

c# - 在 boolean 数组中查找索引从false更改为true?

php - Wordpress 页面无法为少数用户正确呈现

php - Opencart分别获取某些订单总计代码标题的值

php - Mysql INSERT 和 DELETE 在单个语句中相互依赖

mysql - 在 ActiveRecord 中高效地批量更新?

MySQL类别和子类别表结构

javascript - 返回 JavaScript 数组中重复元素的总和

c++ - 在 C++ 标准中通过指向函数的指针传递数组的严格规则背后的原因

php - 图表中来自数据库的 fusionCharts 数据

php - 仅发布使用 while 循环创建的表单中的选择值