结合两个foreach没有错误

时间:2015-05-29 08:39:21

标签: php json loops foreach

我有一个简单的html dom查询,它从足球设备源读取信息,我也加载了json源。

这是我的完整代码:

<?php
    header('Content-Type: text/html; charset=utf-8');
    ini_set("user_agent", "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17");

    include_once('simple_html_dom.php');

    ini_set('display_errors', true);
    error_reporting(E_ALL);

    $str = file_get_contents('general.json');

    $json = json_decode($str,true);

    $filename = "source.html";
    $html = file_get_html($filename);

    class matches {
        var $day;
        var $kickofftime;
        var $result;

        function matches ($day, $kickofftime, $result){
            $this->day=$day;
            $this->kickofftime=$kickofftime;
            $this->result=$result;
            return $this;
        }
    }

    $i=0;

    $day=$html->find('h1',0);
    $day->plaintext;
    $day=str_replace("<h1>TODAY FOOTBALL FIXTURES: ","", $day);
    $day=str_replace("</h1>","", $day);
    $matchday = str_replace(array('MONDAY ', 'TUESDAY ', 'WEDNESDAY ', 'THURSDAY ', 'FRIDAY ',  'SATURDAY ',  'SUNDAY '), '', $day);
    $matchday=str_replace(" ","-", $matchday);
    $matchday=date('Y-m-d', strtotime($matchday));

    foreach($html->find('table.fixtures') as $matches) 

    {

        foreach ($matches->find('tr[class=a1],tr[class=a2]') as $matchesTR) {

            $kickofftime=$matchesTR->find('td[class=a11],td[class=a21]',0)->plaintext;
            $kodate = date('Y-m-d H:i:s', strtotime("$matchday $kickofftime +1 hour"));
            $result=$matchesTR->find('td');


            echo $kodate;
            echo $result[6]->plaintext.'<br>' ; 

            $i++;


        }
    }

    //Here is the 2nd foreach with the data of JSON source:

    foreach($json as $key => $value) {

        $value = json_decode($value, true);

        echo $value["country"] . ", " . $value["competition"] . "  " . $value["club"] . "<br>";
    }


    // clean up memory
        $html->clear();
        unset($html);

    ?>

当前来自简单的html dom html源代码:

2014-12-23 20:00:00 2-1
2014-12-23 11:00:00 3-1
2014-12-26 08:00:00 1-1

JSON来源的结果:

美国Copa America Boca Juniors
欧洲德甲汉诺威
亚洲JLeague名古屋

我想将这两个结果合并到一个foreach中,我希望得到这个结果:

2014-12-23 20:00:00 2-1美国Copa America Boca Juniors
2014-12-23 11:00:00 3-1欧洲德甲汉诺威
2014-12-26 08:00:00 1-1亚洲JLeague名古屋

我希望有人可以帮助我,因为我尝试了很多变化而没有结果。非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以使用PHP的array_map功能。

假设您的值在数组$ a,$ b:

$mapFunc = function($n, $m) {
    return "$n $m";
};
$c = array_map($mapFunc, $a, $b);