你快到了。您将 XML 作为 XML 对象。
回声
您不能回显对象或数组。您必须先将其转换为字符串。
我通常会将我想看到的内容分配给变量名 $show,然后在适当的地方回显 $show。
$show = var_export($result,true);
或者代替回声
var_export($result,false);
第二个参数(真/假)是你是否想将它分配给一个变量或立即回显它。
XML 到数组
为了简单起见,我更喜欢将对象转换为数组。而且我有工具可以分析数组并为我提供每个数据元素的正确语法。
试试这个代码:
XML2array 将对象转换为数组。
XML2array($result,$res);
var_export($res);
添加这个将 XML 对象转换为数组的函数。
function XML2array($obj, &$result) {
$data = $obj;
if (is_object($data)) {
$data = get_object_vars($data);
}
if (is_array($data)) {
foreach ($data as $key => $value) {
$res = null;
XML2array($value, $res);
if (($key == '@attributes') && ($key)) {
$result = $res;
} else {
$result[$key] = $res;
}
}
} else {
$result = $data;
}
}
如果要存储为 JSON,请添加以下代码:
file_put_contents('soccer.jsn',json_encode($res));
更新
他们花了几个小时,但我终于得到了一个 API 密钥。
以上代码不再未经测试。
您的查询匹配 46 条记录 (0-45)
数据的语法是:
其中 $key = 0 到 45
结果语法
$res['Match'][$key]['Id']
$res['Match'][$key]['Date']
$res['Match'][$key]['League']
$res['Match'][$key]['Round']
$res['Match'][$key]['HomeTeam']
$res['Match'][$key]['HomeTeam_Id']
$res['Match'][$key]['HomeGoals']
$res['Match'][$key]['AwayTeam']
$res['Match'][$key]['AwayTeam_Id']
$res['Match'][$key]['AwayGoals']
$res['Match'][$key]['Time']
$res['Match'][$key]['Location']
$res['Match'][$key]['HomeTeamYellowCardDetails']
$res['Match'][$key]['AwayTeamYellowCardDetails']
$res['Match'][$key]['HomeTeamRedCardDetails']
$res['Match'][$key]['AwayTeamRedCardDetails']
['Match'] 没有用,所以我会用这个来消除它:
$res = $res['Match'];
$res['Match'][$key]['Id'] 的新语法变为 $res[$key]['Id']
打印程序
然后打印每条记录:
foreach ($res as $key => $array){
$datetime = date('F j, Y, g:i a',strtotime($res[$key]['Date'] ));
echo "<p>$key) id:" . $res[$key]['Id'] . ', Date Time:' . "$datetime, League:" . $res[$key]['League'] . ', Round:' . $res[$key]['Round'] . '<br/>Home Team: ' . $res[$key]['HomeTeam'] . ', ' . $res[$key]['HomeTeam_Id'] . ', ' . $res[$key]['HomeGoals'] . '<br/>Away Team: ' . $res[$key]['AwayTeam'] . ', ' . $res[$key]['AwayTeam_Id'] . ', ' . $res[$key]['AwayGoals'] . '<br/>' . $res[$key]['Time'] . ', ' . $res[$key]['Location'] . ', ' . $res[$key]['HomeTeamYellowCardDetails'] . ', ' . $res[$key]['AwayTeamYellowCardDetails'] . ', ' . $res[$key]['HomeTeamRedCardDetails'] . ', ' .$res[$key]['AwayTeamRedCardDetails'] . "<p>\n";
}
链接到示例工作 XML 应用程序
Link to Working XML App
输出示例
0) id:333305,日期时间:2014 年 9 月 27 日,上午 10:00,联赛:苏格兰超级联赛,回合:8
主队:罗斯县, 360, 2
客队:邓迪FC, 522, 1
完成,维多利亚公园,61':格雷厄姆·凯里;90':格雷格·斯图尔特;88':马丁·博伊尔;,,
1) id:333304,日期时间:2014年9月27日,上午10:00,联赛:苏格兰超级联赛,回合:8
主队:马瑟韦尔,47, 0
客队:汉密尔顿,228,4
完成,冷杉公园体育场,65':杰克·雷奇;61':弗雷泽·科尔;19':扎恩·弗朗西斯-安戈尔;14':保罗·劳森;2':斯蒂芬·麦克马纳斯;,58':格兰特·吉莱斯皮;,,
2) id:333303,日期时间:2014年9月27日,上午10:00,联赛:苏格兰超级联赛,回合:8
主队:基尔马诺克,52 岁,3 岁
客队:帕蒂克,561, 0
完成,橄榄球公园,81':克里斯·杜兰;72':杰克·卡罗尔;63':亚伦·穆尔黑德;,,
3) id:333302,日期时间:2014年9月27日,上午10:00,联赛:苏格兰超级联赛,回合:8
主队:邓迪联队,51、2
客队:圣约翰斯通,46, 0
完成,坦纳迪斯公园,90':Callum Morris;66':Nadir Ciftci;,79':David Wotherspoon;,,
$res 数组示例
array (
0 =>
array (
'Id' => '333305',
'Date' => '2014-09-27T14:00:00+00:00',
'League' => 'Scottish Premier League',
'Round' => '8',
'HomeTeam' => 'Ross County',
'HomeTeam_Id' => '360',
'HomeGoals' => '2',
'AwayTeam' => 'Dundee FC',
'AwayTeam_Id' => '522',
'AwayGoals' => '1',
'Time' => 'Finished',
'Location' => 'Victoria Park',
'HomeTeamYellowCardDetails' => '61\': Graham Carey;',
'AwayTeamYellowCardDetails' => '90\': Greg Stewart;88\': Martin Boyle;',
'HomeTeamRedCardDetails' => NULL,
'AwayTeamRedCardDetails' => NULL,
),
1 =>
array (
'Id' => '333304',
'Date' => '2014-09-27T14:00:00+00:00',
'League' => 'Scottish Premier League',
'Round' => '8',
'HomeTeam' => 'Motherwell',
'HomeTeam_Id' => '47',
'HomeGoals' => '0',
'AwayTeam' => 'Hamilton',
'AwayTeam_Id' => '228',
'AwayGoals' => '4',
'Time' => 'Finished',
'Location' => 'Fir Park Stadium',
'HomeTeamYellowCardDetails' => '65\': Jack Leitch;61\': Fraser Kerr;19\': Zaine Francis-Angol;14\': Paul Lawson;2\': Stephen McManus;',
'AwayTeamYellowCardDetails' => '58\': Grant Gillespie;',
'HomeTeamRedCardDetails' => NULL,
'AwayTeamRedCardDetails' => NULL,
),
2 =>
array (
'Id' => '333303',
'Date' => '2014-09-27T14:00:00+00:00',
'League' => 'Scottish Premier League',
'Round' => '8',
'HomeTeam' => 'Kilmarnock',
'HomeTeam_Id' => '52',
'HomeGoals' => '3',
'AwayTeam' => 'Partick',
'AwayTeam_Id' => '561',
'AwayGoals' => '0',
'Time' => 'Finished',
'Location' => 'Rugby Park',
'HomeTeamYellowCardDetails' => NULL,
'AwayTeamYellowCardDetails' => '81\': Kris Doolan;72\': Jake Carroll;63\': Aaron Muirhead;',
'HomeTeamRedCardDetails' => NULL,
'AwayTeamRedCardDetails' => NULL,
),
3 =>
array (
'Id' => '333302',
'Date' => '2014-09-27T14:00:00+00:00',
'League' => 'Scottish Premier League',
'Round' => '8',
'HomeTeam' => 'Dundee United',
'HomeTeam_Id' => '51',
'HomeGoals' => '2',
'AwayTeam' => 'St Johnstone',
'AwayTeam_Id' => '46',
'AwayGoals' => '0',
'Time' => 'Finished',
'Location' => 'Tannadice Park',
'HomeTeamYellowCardDetails' => '90\': Callum Morris;66\': Nadir Ciftci;',
'AwayTeamYellowCardDetails' => '79\': David Wotherspoon;',
'HomeTeamRedCardDetails' => NULL,
'AwayTeamRedCardDetails' => NULL,
),
最终代码
$soccer=new XMLSoccer("your_api_key");
$soccer->setServiceUrl("http://www.xmlsoccer.com/FootballDataDemo.asmx");
$result=$soccer->GetFixturesByDateIntervalAndLeague(array("league"=>3,"startDateString"=>"2014-08-01 00:00","endDateString"=>"2014-09-30 00:00"));
XML2array($result,$res);
$res = $res['Match'];
foreach ($res as $key => $array){
$datetime = date('F j, Y, g:i a',strtotime($array['Date'] ));
echo "<p>$key) id:" .$array['Id'] . ', Date Time:' . "$datetime, League:" .$array['League'] . ', Round:' .$array['Round'] . '<br/>Home Team: ' .$array['HomeTeam'] . ', ' .$array['HomeTeam_Id'] . ', ' .$array['HomeGoals'] . '<br/>Away Team: ' .$array['AwayTeam'] . ', ' .$array['AwayTeam_Id'] . ', ' .$array['AwayGoals'] . '<br/>' .$array['Time'] . ', ' .$array['Location'] . ', ' .$array['HomeTeamYellowCardDetails'] . ', ' .$array['AwayTeamYellowCardDetails'] . ', ' .$array['HomeTeamRedCardDetails'] . ', ' .$res[$key]['AwayTeamRedCardDetails'] . "<p>\n";
}
echo '<pre>';
var_export($res);
echo '<pre>';
file_put_contents('soccer.jsn',json_encode($res));
}
catch(XMLSoccerException $e){
echo "XMLSoccerException: ".$e->getMessage();
}
function XML2array($obj, &$result) {
$data = $obj;
if (is_object($data)) {
$data = get_object_vars($data);
}
if (is_array($data)) {
foreach ($data as $key => $value) {
$res = null;
XML2array($value, $res);
if (($key == '@attributes') && ($key)) {
$result = $res;
} else {
$result[$key] = $res;
}
}
} else {
$result = $data;
}
}