Как объединить статистику двух массивов путем сопоставления полей - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть два массива, содержащих различные статистические данные пользователя по главному городу и суб-городу.

Разница между двумя массивами состоит в том, что в одном из них есть свойство ofd, а в другом - нет.другой массив, имеющий некоторую другую статистику того же пользователя, как доставлено

Итак, чего я хочу добиться, так это объединить статистику пользователей в один массив, основанный на разных основных городах и подгородах ...

Массив 1:

[310] => Array
(
    [walker_id] => 158
    [walker] => سلطان 158
    [districts] => Al Muhammadiyah, Al Hamadaniyah, Abhur Aljanubiah, Al Basatin, Al Asalah, Ar Rayyan, Abur Ash Shamaliyah,
    Al Murjan, As Salhiyah, Al Khalidiyah, Ar Rawadah, Az Zahra, Al Faisaliyah, An Nahdah, Ash Shati, Al Wahah, Al
    Khaldiyah, Al Loaloa, Ar Rabwah, An Nuzhah, An Naim, King Abdul Aziz International Airport, Ash Sheraa, Az Zomorod, Al
    Yaqoot, Al Amwaj, Al Hamra, Al Andalus, Al Aziziyah, As Samir, Al Fadeylah, Al Waha, An Nakhil, Mraykh, Ash Sharafiyah,
    Al Marwah, Abhur Al Junoobiyah, Petoromin, An Nasim, Abrug Ar Rughamah, Al Amir Abdulmajed, Jeddah Islamic Seaport, Al
    Frosya, Taibah, As Salamah, As Sarawat, Al Farouk, Ar Rewis, As Safa, Ar Rawabi, Al Baghdadiyah Al Gharbiyah, Faysalia,
    Al Salamah, Mishrifah, Thuwal, Al Masarah
    [main_city] => Jeddah
    [sub_city] => Jeddah
    [ofd] => 25
)

[311] => Array
(
    [walker_id] => 158
    [walker] => سلطان 158
    [districts] => Al Muhammadiyah, Al Hamadaniyah, Abhur Aljanubiah, Al Basatin, Al Asalah, Ar Rayyan, Abur Ash Shamaliyah,
    Al Murjan, As Salhiyah, Al Khalidiyah, Ar Rawadah, Az Zahra, Al Faisaliyah, An Nahdah, Ash Shati, Al Wahah, Al
    Khaldiyah, Al Loaloa, Ar Rabwah, An Nuzhah, An Naim, King Abdul Aziz International Airport, Ash Sheraa, Az Zomorod, Al
    Yaqoot, Al Amwaj, Al Hamra, Al Andalus, Al Aziziyah, As Samir, Al Fadeylah, Al Waha, An Nakhil, Mraykh, Ash Sharafiyah,
    Al Marwah, Abhur Al Junoobiyah, Petoromin, An Nasim, Abrug Ar Rughamah, Al Amir Abdulmajed, Jeddah Islamic Seaport, Al
    Frosya, Taibah, As Salamah, As Sarawat, Al Farouk, Ar Rewis, As Safa, Ar Rawabi, Al Baghdadiyah Al Gharbiyah, Faysalia,
    Al Salamah, Mishrifah, Thuwal, Al Masarah
    [main_city] => Jeddah
    [sub_city] => Khulais
    [ofd] => 1
)

Массив 2:

[260] => Array
(
    [walker_id] => 158
    [walker] => سلطان 158
    [main_city] => Jeddah
    [sub_city] => Jeddah
    [districts] => Al Muhammadiyah, Al Hamadaniyah, Abhur Aljanubiah, Al Basatin, Al Asalah, Ar Rayyan, Abur Ash Shamaliyah,
    Al Murjan, As Salhiyah, Al Khalidiyah, Ar Rawadah, Az Zahra, Al Faisaliyah, An Nahdah, Ash Shati, Al Wahah, Al
    Khaldiyah, Al Loaloa, Ar Rabwah, An Nuzhah, An Naim, King Abdul Aziz International Airport, Ash Sheraa, Az Zomorod, Al
    Yaqoot, Al Amwaj, Al Hamra, Al Andalus, Al Aziziyah, As Samir, Al Fadeylah, Al Waha, An Nakhil, Mraykh, Ash Sharafiyah,
    Al Marwah, Abhur Al Junoobiyah, Petoromin, An Nasim, Abrug Ar Rughamah, Al Amir Abdulmajed, Jeddah Islamic Seaport, Al
    Frosya, Taibah, As Salamah, As Sarawat, Al Farouk, Ar Rewis, As Safa, Ar Rawabi, Al Baghdadiyah Al Gharbiyah, Faysalia,
    Al Salamah, Mishrifah, Thuwal, Al Masarah
    [delivered] => 16
    [undelivered] => 3
    [returnedToowner] => 0
)

[261] => Array
(
    [walker_id] => 158
    [walker] => سلطان 158
    [main_city] => Jeddah
    [sub_city] => Khulais
    [districts] => Al Muhammadiyah, Al Hamadaniyah, Abhur Aljanubiah, Al Basatin, Al Asalah, Ar Rayyan, Abur Ash Shamaliyah,
    Al Murjan, As Salhiyah, Al Khalidiyah, Ar Rawadah, Az Zahra, Al Faisaliyah, An Nahdah, Ash Shati, Al Wahah, Al
    Khaldiyah, Al Loaloa, Ar Rabwah, An Nuzhah, An Naim, King Abdul Aziz International Airport, Ash Sheraa, Az Zomorod, Al
    Yaqoot, Al Amwaj, Al Hamra, Al Andalus, Al Aziziyah, As Samir, Al Fadeylah, Al Waha, An Nakhil, Mraykh, Ash Sharafiyah,
    Al Marwah, Abhur Al Junoobiyah, Petoromin, An Nasim, Abrug Ar Rughamah, Al Amir Abdulmajed, Jeddah Islamic Seaport, Al
    Frosya, Taibah, As Salamah, As Sarawat, Al Farouk, Ar Rewis, As Safa, Ar Rawabi, Al Baghdadiyah Al Gharbiyah, Faysalia,
    Al Salamah, Mishrifah, Thuwal, Al Masarah
    [delivered] => 0
    [undelivered] => 1
    [returnedToowner] => 0

Требуемый результат:

[0] => Array
(
    [walker_id] => 158
    [walker] => سلطان 158
    [main_city] => Jeddah
    [sub_city] => Jeddah
    [districts] => Al Muhammadiyah, Al Hamadaniyah, Abhur Aljanubiah, Al Basatin, Al Asalah, Ar Rayyan, Abur Ash Shamaliyah,
    Al Murjan, As Salhiyah, Al Khalidiyah, Ar Rawadah, Az Zahra, Al Faisaliyah, An Nahdah, Ash Shati, Al Wahah, Al
    Khaldiyah, Al Loaloa, Ar Rabwah, An Nuzhah, An Naim, King Abdul Aziz International Airport, Ash Sheraa, Az Zomorod, Al
    Yaqoot, Al Amwaj, Al Hamra, Al Andalus, Al Aziziyah, As Samir, Al Fadeylah, Al Waha, An Nakhil, Mraykh, Ash Sharafiyah,
    Al Marwah, Abhur Al Junoobiyah, Petoromin, An Nasim, Abrug Ar Rughamah, Al Amir Abdulmajed, Jeddah Islamic Seaport, Al
    Frosya, Taibah, As Salamah, As Sarawat, Al Farouk, Ar Rewis, As Safa, Ar Rawabi, Al Baghdadiyah Al Gharbiyah, Faysalia,
    Al Salamah, Mishrifah, Thuwal, Al Masarah
    [delivered] => 16
    [undelivered] => 3
    [returnedToowner] => 0
    [ofd] => 53
)

[1] => Array
(
    [walker_id] => 158
    [walker] => سلطان 158
    [main_city] => Jeddah
    [sub_city] => Khulais
    [districts] => Al Muhammadiyah, Al Hamadaniyah, Abhur Aljanubiah, Al Basatin, Al Asalah, Ar Rayyan, Abur Ash Shamaliyah,
    Al Murjan, As Salhiyah, Al Khalidiyah, Ar Rawadah, Az Zahra, Al Faisaliyah, An Nahdah, Ash Shati, Al Wahah, Al
    Khaldiyah, Al Loaloa, Ar Rabwah, An Nuzhah, An Naim, King Abdul Aziz International Airport, Ash Sheraa, Az Zomorod, Al
    Yaqoot, Al Amwaj, Al Hamra, Al Andalus, Al Aziziyah, As Samir, Al Fadeylah, Al Waha, An Nakhil, Mraykh, Ash Sharafiyah,
    Al Marwah, Abhur Al Junoobiyah, Petoromin, An Nasim, Abrug Ar Rughamah, Al Amir Abdulmajed, Jeddah Islamic Seaport, Al
    Frosya, Taibah, As Salamah, As Sarawat, Al Farouk, Ar Rewis, As Safa, Ar Rawabi, Al Baghdadiyah Al Gharbiyah, Faysalia,
    Al Salamah, Mishrifah, Thuwal, Al Masarah
    [delivered] => 0
    [undelivered] => 1
    [returnedToowner] => 0
    [ofd]            => 1

Редактировать:

Мой код:

foreach($delivered as $value){

    $def[] = array(
        'walker_id' => $value->confirmed_walker,
        'walker'   => $value->walker,
        'main_city' => $value->main_city,
        'sub_city' => $value->d_city,
        'districts' => $value->districts,
        'delivered' => $value->delivered,
        'undelivered' => $value->undelivered,
        'returnedToowner' => $value->toowner,

    );
}


foreach($withCaptain as $value){
    $dataArray[] = array(
        'walker_id' => $value->walker_id,
        'walker'   => $value->walker,
        'districts' => $value->districts,
        'main_city' => $value->main_city,
        'sub_city' => $value->sub_city,
        'ofd'     => $value->ofd,
    );
}

$kv=[];
foreach($dataArray as $k => $v){
    $kv[ $v['walker_id'] ] = $k; // this is considering unique walker_id and not considering city and subcity

}

foreach($def as $k => $v){

    if(!isset($dataArray[$k]['delivered'])){
        $dataArray[$k]['delivered'] = 0;
        $dataArray[$k]['undelivered'] = 0;
    }

    if( array_key_exists( $v['walker_id'] , $kv ) ){      
        $dataArray[ $kv[$v['walker_id']] ] = array_merge( $dataArray[$kv[$v['walker_id']]] , $def[$k] );     
    }
}

хочу объединить $ def и$ DataArray.они оба не равны массивам.

, поэтому я хочу объединить оба массива на основе walker_id, main_city и sub_city.

Я пробовал разные вещи, но ничего не получается.я пробовал это Объединить два ассоциативных массива одним и тем же ключом

Но временный массив не учитывает главные и вспомогательные города и его просто расчесывание на основе walker_id ...

спасибозаранее

Дайте мне знать, если вам нужно больше деталей ..

...