将数据添加到数组

时间:2018-03-08 15:49:49

标签: php arrays

我已经设法从网站获取我需要的信息。现在我想将数据插入到数组中,这样我就可以轻松地将信息插入到数据库中。

以下是代码的样子:

<?php

    $page = file_get_contents("http://www.kalender.se/helgdagar");
    $string = trim(preg_replace('/\s\s+/', '', $page));
    $string = preg_replace("#<a.*?>(.*?)<\/a>#s", '|\1', $string);
    preg_match_all("/<td>([\d-]{10})<\/td><td>(.*?)<\/td>/s", $string, $matches);

    foreach($matches[0] AS $test) {
        $splitted = explode('|', $test);
        echo '<pre>'; print_r($splitted[0]); echo '</pre>';
    }

?>

使用$splitted[0]打印出以下内容:

2018-01-01
2018-01-06
2018-03-30
2018-04-01
2018-04-02
2018-05-01
2018-05-10
2018-05-20
2018-06-06
2018-06-23
2018-11-03
2018-12-25
2018-12-26

使用$splitted[1]

Nyårsdagen
Trettondedag jul
Långfredagen
Påskdagen
Annandag påsk
Första maj
Kristi himmelfärdsdag
Pingstdagen
Sveriges nationaldag
Midsommar
Alla helgons dag
Juldagen
Annandag jul

我希望将这些信息分组并放在一个数组中,如下所示:

Array(
    '2018-01-01' => 'Nyårsdagen',
    '2018-01-06' => 'Trettondedag jul',
    ... and so on
);

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我甚至不知道array_combine()甚至存在,直到Jon Stirling在comment中提到它。非常感谢,Jon! :)

这是最终结果:

<?php

    $page = file_get_contents("http://www.kalender.se/helgdagar");
    $string = trim(preg_replace('/\s\s+/', '', $page));
    $string = preg_replace("#<a.*?>(.*?)<\/a>#s", '\1', $string);
    preg_match_all("/<td>([\d-]{10})<\/td><td>(.*?)<\/td>/s", $string, $matches);

    $array_test_1 = Array();
    foreach($matches[1] AS $test1) {
        $array_test_1[] = $test1;
        # echo '<pre>'; print_r($splitted[1]); echo '</pre>';
    }

    $array_test_2 = Array();
    foreach($matches[2] AS $test2) {
        $array_test_2[] = $test2;
        # echo '<pre>'; print_r($splitted[1]); echo '</pre>';
    }

    $finishit = array_combine($array_test_1, $array_test_2);

    echo '<pre>'; print_r($finishit); echo '</pre>';

?>