我已经在我的代码中一遍又一遍地出现了这个块,稍有变化,我想使用一个函数,但据我所知,在编写函数时你可以设置参数的数量,
我正在使用的代码块是
$type = $xml->response->williamhill->class->type;
$type_attrib = $type->attributes();
echo "<h2>".$type_attrib['name']."</h2>";
echo "<h2>".$type_attrib['url']."</h2>";
主要区别在于,通过xml文档向下钻取的第一行,可能在其他地方进一步向下钻取,是否可以使用函数?
即。它可能需要在某些地方看起来像这样:
$xml->response->williamhill->class->type->market->participant
答案 0 :(得分:2)
您可以使用XPath:
function get_type_as_html($xml, $path)
{
$type = $xml->xpath($path)[0]; // check first if node exists would be a good idea
$type_attrib = $type->attributes();
return "<h2>".$type_attrib['name']."</h2>" .
"<h2>".$type_attrib['url']."</h2>";
}
用法:
echo get_type_as_html($xml, '/response/williamhill/class/type');
此外,如果此路径的任何部分始终相同,您可以将该部分移动到该功能中,即
$type = $xml->xpath('/response/' . $path);
答案 1 :(得分:1)
不需要无数个参数。这样做的方法是使用一个参数,每次调用函数时都可以改变。
首先定义函数并将$type
变量作为参数:
function output_header($type)
{
$type_attrib = $type->attributes();
echo "<h2>".$type_attrib['name']."</h2>";
echo "<h2>".$type_attrib['url']."</h2>";
}
然后,您可以使用您喜欢的任何$xml->...
属性调用该函数。
<?php
output_header($xml->response->williamhill->class->type);
output_header($xml->response->williamhill->class->type->market->participant);
?>