首页 > 解决方案 > 显示来自具有一个公共点的两个数组的数据

问题描述

我有两个数组。第一个是关于汇率的,我的控制台中的显示是这样的:

{
  "exchange_rate": [
    {
      "id": "978",
      "start_dateTime": "2021-08-01 07:35:02",
      "target_value": "1.00000",
      "currency_value_euro": "0.84097",
      "currency_value_dollar_us": "1.00000",
      "id_currency": "1",
      "currency": "Dollar am\u00e9ricain",
      "currency_symbol": "$US"
    },
    {
      "id": "980",
      "start_dateTime": "2021-08-01 07:35:02",
      "target_value": "1.00000",
      "currency_value_euro": "1.17454",
      "currency_value_dollar_us": "0.71600",
      "id_currency": "2",
      "currency": "Livre sterling",
      "currency_symbol": "\u00a3"
    }
  ]
}

这些数据来自数据库,我可以通过使用 jQuery 选择特定日期来显示它。

第二个数组仅包含 id_currency 在我的控制台中是这样的:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 在我的网站上,我希望能够按特定货币和日期显示特定汇率。在这里我的问题出现了,我找不到在第一个数组上循环的方法,然后在第二个数组上再次循环并比较两者,例如第一个数组有 id_currency 1,第二个数组有 id_currency 1,然后显示完整行从第一个数组。

我已经尝试了几件事,但没有任何效果,最后我尝试了这个:

foreach ($res as $row){
            $idBDD = $row['id_currency'];
            $symbolBDD = $row['currency_symbol'];
            echo $idBDD;
            echo $symbolBDD;
            //var_dump($row);
            /*foreach ($arr as $line){
                $idCheckbox = $line;
                echo $idCheckbox;
            }
            if ($idBDD == $idCheckbox){
                echo 'fine';
            }
            */
        }

我会感谢你的帮助

标签: phparraysloopsforeach

解决方案


您需要访问数组$res["exchange_rate"]并循环遍历它。

<?php
$res = [
    "exchange_rate" => [
        [
            "id" => "978",
            "start_dateTime" => "2021-08-01 07:35:02",
            "target_value" => "1.00000",
            "currency_value_euro" => "0.84097",
            "currency_value_dollar_us" => "1.00000",
            "id_currency" => "1",
            "currency" => "Dollar américain",
            "currency_symbol" => "\$US"
        ],
        [
            "id" => "980",
            "start_dateTime" => "2021-08-01 07:35:02",
            "target_value" => "1.00000",
            "currency_value_euro" => "1.17454",
            "currency_value_dollar_us" => "0.71600",
            "id_currency" => "2",
            "currency" => "Livre sterling",
            "currency_symbol" => "£"
        ]
    ]
];

$output = null;

foreach ($res["exchange_rate"] as $row) {
    if (!isset($output)) {
        $output = $row;
    }
    $output = array_intersect_assoc($output, $row);
}

var_dump($output);


推荐阅读