PHP:遍历两个数组,找到匹配,组合

时间:2016-07-22 17:40:03

标签: php arrays json for-loop foreach

我有一个包含当前故障单信息的数组,如下所示:

[0] => Array
    (
        [company] => Rhodes and Associates
        [lat] => 47.32026
        [lng] => -122.30402
    )

[1] => Array //There are 130+ more...

我还有另一个数组,公司的位置坐标来自:

if ($ticket_number = $onsites) {
$current_onsites = array();
$i = 0;

$coordinates = json_decode(file_get_contents('geo.json'), true);
$crd = array();

for ($i = 0; $i <= count($ticket_number); $i++) {
    @$current_onsites[$i]['id'] = $ticket_number[$i];
    @$current_onsites[$i]['text'] = $summary[$i];
    @$current_onsites[$i]['location'] = $location[$i];
    @$current_onsites[$i]['company'] = $company[$i];
    @$current_onsites[$i]['site'] = $site[$i];
    @$current_onsites[$i]['location'] = $full_address[$i];
    @$current_onsites[$i]['contact'] = $contact[$i];
    @$current_onsites[$i]['start_date'] = date('Y-m-d H:i:s', strtotime($startDate[$i]));
    @$current_onsites[$i]['end_date'] = date('Y-m-d H:i:s', strtotime($endDate[$i]));
    @$current_onsites[$i]['technician'] = $technician[$i];
    @$current_onsites[$i]['hours'] = $hours[$i];
    @$current_onsites[$i]['status'] = $status[$i];
    @$current_onsites[$i]['ownerFlag'] = $ownerFlag[$i];

    foreach ($coordinates as $latlng){
        if ($latlng['input_id'] = @$current_onsites[$i]['company']) {
            @$current_onsites[$i]['lat'] = $latlng['metadata']['latitude'];
            @$current_onsites[$i]['lng'] = $latlng['metadata']['longitude'];
        } else {}
    }
}

print "<pre>";
print_r ($current_onsites);
print "</pre>";

//$fp = fopen('results.json', 'w');
//fwrite($fp, json_encode($current_onsites));
//fclose($fp);

从我们的系统中提取票证数据(cURL)后,我使用两个循环来迭代这两个数据集,但似乎无法获得正确的坐标以填充更大的数据数组。更具体地说,在公司信息数组中被拉和填充的唯一坐标对是迭代中的最后一对,[132]。

以下是代码段:

{{1}}

我知道代码非常脏,我现在只想让它运行起来。任何想法都非常感谢。感谢。

1 个答案:

答案 0 :(得分:1)

if ($latlng['input_id'] = @$current_onsites[$i]['company']) {

你有一个= - 这是分配,而不是比较。

但你不应该这样做。两个循环将您的O(n)算法转换为O(n ^ 2)。按公司名称重新索引第二个数组,以便您可以执行快速查找。

相关问题