使用无数个参数创建一个函数

时间:2013-01-23 22:33:30

标签: php function

我已经在我的代码中一遍又一遍地出现了这个块,稍有变化,我想使用一个函数,但据我所知,在编写函数时你可以设置参数的数量,

我正在使用的代码块是

 $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

2 个答案:

答案 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);
?>