【问题标题】:PHP Match two arrays on key value (like mysql join)PHP 在键值上匹配两个数组(如 mysql 连接)
【发布时间】:2013-06-25 14:34:34
【问题描述】:

有没有办法根据键中的相同值连接两个数组? 以 MySQL 中的示例为例,当两个字段具有相同的值时,您可以左连接两个表。

第一个名为“phoneArr”的数组是一个带有 person_id 和电话号码的数组 第二个名为“clientDate”的数组是一个带有 person_id 和约会日期的数组。

这里是数组:

$phoneArr = array();

$phoneArr[0]['person_id'] = "123456";
$phoneArr[0]['phone'] = "555-2222";

$phoneArr[1]['person_id'] = "7654321";
$phoneArr[1]['phone'] = "555-1111";


$clientDate = array();
$clientDate[0]['person_id'] = "123456";
$clientDate[0]['date_time'] = "01-07-13 13:00";

$clientDate[1]['person_id'] = "7654321";
$clientDate[1]['date_time'] = "01-07-13 10:30";

现在,如果 clientDate 中的人员 id 将始终存在于 phoneArr 中,而不是其他 wat 中。 phoneArr 中的人员并不总是存在于 clientDate 中。

我想要的是获得这些数组的匹配项,我将得到一个包含两个数组信息的新数组,但只有“person_id”上存在匹配项。

没有 MySQL 是否可行?

【问题讨论】:

    标签: php arrays multidimensional-array matching


    【解决方案1】:

    如果您要通过键值查找数据,并且该键值在表中是唯一的,您可以考虑将其用作数组键,因此您的 $phoneArr 将设置为:

    $phoneArr["123456"]['phone'] = "555-2222";
    $phoneArr["7654321"]['phone'] = "555-1111";
    

    对另一个数组做同样的事情

    那么你可以:

    foreach ($phoneArr AS $id=>$record) {
        if (array_key_exists($id,$clientDate)) {
             //  the client id is $id, $record has their phone #, and $clientDate[$id] has their date/time
             // do something with it here - either process it (preferable) or put the data in another array.
         }
    }
    

    【讨论】:

    • 太好了,我要调查一下。我需要在其他地方进行一些更改,因为我没有在脚本中输入这些数组,而是使用 for 循环创建它们。
    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多