我可以将一个数组而不是多个相关参数传递给该函数吗?

时间:2016-09-16 21:49:51

标签: php arrays function arguments parameter-passing

我有一个为我提供HTML的功能。像这样:

function user_profile ($name, $age, $location){
    return "<div class='myclass' style='color:red'>
                <span class='title'>user's profile</span>
                <ul>
                    <li>Name: $name</li>
                    <li>Age: $age</li>
                    <li>location: $location</li>
                </ul>
            </div>";
} 

echo user_profile ($name, $age, $location);

上面的功能简化了我的实际功能。实际上,该函数有14个参数,HTML更长。

无论如何,我想知道我可以让它更干净吗?我的意思是,我可以创建所有参数的数组并将其传递给(数组)吗?在那种情况下,我如何将它用于函数?

同样,实际上我的代码要大得多,而上面的代码只是一个样本。

2 个答案:

答案 0 :(得分:3)

答案是肯定的,您可以将数组作为参数传递。在您的代码中,它看起来像这样:

function user_profile ($array){
    return "<div class='myclass' style='color:red'>
                <span class='title'>user's profile</span>
                <ul>
                    <li>Name: $array[0]</li>
                    <li>Age: $array[1]</li>
                    <li>location: $array[2]</li>
                </ul>
            </div>";
} 

//variables in the following array are defined elsewhere in script - not revelant here

$array = array($name, $age, $location);
echo user_profile($array);

更有吸引力的方法是通过关联数组使用键值对:

function user_profile ($array){
    return "<div class='myclass' style='color:red'>
                <span class='title'>user's profile</span>
                <ul>
                    <li>Name: " . $array['Name'] . "</li>
                    <li>Age: " . $array['Age'] . "</li>
                    <li>location: " . $array['Location'] . "</li>
                </ul>
            </div>";
} 

//variables in the following array are defined elsewhere in script - not revelant here

$array = array('Name' => $name, 'Age' => $age, 'Location' => $location);
echo user_profile($array);

此方法使用关联数组,可以让您更轻松地将数组键与HTML列表项内容进行匹配。

答案 1 :(得分:0)

在我看来,将数组作为参数传递是The One and Only ChemistryBlob所说的唯一干净的方法。但是可以通过让它更具动态来改进,因为数组可以传递任意数量的信息。

function user_profile ($array){
    $return ="<div class='myclass' style='color:red'>
                <span class='title'>user's profile</span>
                <ul>".PHP_EOL;
    foreach($array as $key=> $value){
         $return .="<li>".$key.": ".$value."</li>".PHP_EOL;
    }
    $return.="</ul>
            </div>";
    return $return;
} 

$try =['Name' => $name, 
      'Age' => $age, 
      'Location' => $location];

echo user_profile($try);