Target1
@Target1

Сравнение двух массивов и вставка. Есть способ по лучше?

$arr = [
    0 => [
        "Alex","12"
    ],
    1 => [
        "Jon","17"
    ],
    2 => [
        "Mary","27"
    ]
];


$arr2 = [
    0 => [
        "Alex","some"
    ],
    1 => [
        "Jon","words"
    ],
    2 => [
        "Mary","any"
    ]
];



foreach($arr as $Full)
{
    foreach($arr2 as $End)
    {
        if($Full[0] == $End[0])
        {
            array_splice( $Full, 1, 0, "$End[1]" );
            break;
        }
    }
    
    $done = implode(",",$Full);
    $done .= "\n";
    echo $done;
}

Нужен способ по лучше чем этот . А то у меня решение в лоб и не очень эффективно как по мне..
Результат должен быть таким
Alex,some,12
Jon,words,17
Mary,any,27
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Есть. Ваш вариант O(n2).
Сортировка массивов по первому элементу подмассива и однократный проход сразу по обоим массивам. O(n*log(n))
Ещё вариант - сортировка только одного массива и бинарный поиск в нём при обходе другого массива. O(n*log(n))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы