Преобразование многомерного массива в единый массив в PHP - PullRequest
1 голос
/ 10 июля 2020

Как я могу преобразовать многомерный массив в единый массив в php? Я потратил несколько часов, чтобы найти решение, но не смог найти решение, которое мне подходит. Вот мой код:

<?php

$arrContextOptions=array(
    "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
        "http" => array(
            "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
        )
    )
);

$source_url = 'http://netsparker.com/';
$html = file_get_contents($source_url,false, stream_context_create($arrContextOptions));
$dom = new DOMDocument;
@$dom->loadHTML($html);
$links = $dom->getElementsByTagName('a');


foreach ($links as $link) {
    $result_url = $link->getAttribute('href');


    if (!preg_match('/^https?:\/\//', $result_url)) {
        $result_url = $source_url . preg_replace('/^\//', '', $result_url);


    }
    $array2 = array($result_url);
    print_r($array2);
}



?>

Array
(
    [0] => http://github.com/#start-of-content
)
Array
(
    [0] => https://help.github.com/articles/supported-browsers
)
Array
(
    [0] => https://github.com/
)
Array
(
    [0] => http://github.com/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home
)
Array
(
    [0] => http://github.com/features
)
Array
(
    [0] => http://github.com/features/code-review/
)
Array
(
    [0] => http://github.com/features/project-management/
)

....

Я хочу превратить его в:

Array
(
    [0] => http://github.com/
    [1] => http://github.com/collections
    [2] => http://github.com/topics
    [3] => http://github.com/explore
    [4] => http://github.com/enterprise
    .......
) 

Я пробовал с помощью foreach, ArrayIterator, сглаживать, но, похоже, он не работает. Я также пытался преобразовать result_url в массив, но тоже не сработало.

1 Ответ

1 голос
/ 10 июля 2020

Попробуйте поместить значения в один массив в вашем foreach l oop:

$array2 = [];
foreach ($links as $link) {
    $result_url = $link->getAttribute('href');

    if (!preg_match('/^https?:\/\//', $result_url)) {
        $result_url = $source_url . preg_replace('/^\//', '', $result_url);
    }

    $array2[] = $result_url;
}
print_r($array2);
...