Как пересечь несколько многомерных массивов - PullRequest
0 голосов
/ 15 октября 2018

У меня есть два разных многомерных массива следующим образом:

Array //1st_array
(
    [0] => Array
        (
            [timestamp] => 7/10/2018 15:24:06
            [username] => giakhang
            [status] => 
        )

    [1] => Array
        (
            [timestamp] => 8/10/2018 5:11:25
            [username] => haophan
            [status] => 
        )

    [2] => Array
        (
            [timestamp] => 8/10/2018 6:38:18
            [username] => TTQ1504
            [status] => 
        )

    [3] => Array
        (
            [timestamp] => 08/10/2018 7:04:20
            [username] => btcgainer24724
            [status] => 
        )

)


Array //2nd_array
(
    [0] => Array
        (
            [timestamp] => 8/10/2018 5:10:06
            [username] => giakhang
        )

    [1] => Array
        (
            [timestamp] => 8/10/2018 5:13:25
            [username] => btcgainer24724
        )

    [2] => Array
        (
            [timestamp] => 8/10/2018 6:44:18
            [username] => anggie88
        )

    [3] => Array
        (
            [timestamp] => 08/10/2018 7:55:20
            [username] => ZeusTrade
        )

)

Для каждого того же username между 1st_array и 2nd_array Я хочу изменить status в 1st_array и unset из 2nd_array объектов, не пересекающихся между ними, следующим образом:

Array //1st_array
(
    [0] => Array
        (
            [timestamp] => 7/10/2018 15:24:06
            [username] => giakhang
            [status] => Yes
        )

    [1] => Array
        (
            [timestamp] => 8/10/2018 5:11:25
            [username] => haophan
            [status] => No
        )

    [2] => Array
        (
            [timestamp] => 8/10/2018 6:38:18
            [username] => TTQ1504
            [status] => No
        )

    [3] => Array
        (
            [timestamp] => 08/10/2018 7:04:20
            [username] => btcgainer24724
            [status] => Yes
        )

)


Array //2nd_array
(
    [0] => Array
        (
            [timestamp] => 8/10/2018 5:10:06
            [username] => giakhang
        )

    [1] => Array
        (
            [timestamp] => 8/10/2018 5:13:25
            [username] => btcgainer24724
        )

)

Как я могу пересечь эти многомерные массивы?

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Возможно, может быть более чистое решение, но вот моя попытка:

foreach ($1stArray as $1st) {
    foreach ($2ndArray as $2nd) {
        if ($1st['username'] == $2nd['username']) 
            $1st['status'] = 'Yes';
    }
    if (!$1st['status']) {
        $1st['status'] = 'No';
        unset($2ndArray[array_search($1st['username'], $1st)]);
    }
}

// Finally, we sanitize the 2ndArray indexes
$2ndArray = array_values($2ndArray);
0 голосов
/ 15 октября 2018

Попробуйте это:

foreach ($second_array as $key => $value) {
        $exist = false;
        foreach ($first_array as $key2 => $value2) {
            if ($value['username'] == $value2['username']) {
                $exist = true;
                $first_array[$key2]['status'] = 'Yes';
                break;
            } elseif (!$first_array[$key2]['status']) {
                $first_array[$key2]['status'] = 'No';
            }
        }

        if (!$exist) {

            unset($second_array[$key]);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...