php - 如何将参数传递给函数

时间:2015-10-21 10:15:01

标签: php parameters

我很确定这对你们所有人来说都是一个非常基本的问题,但我是一个非常新的PHP,我真的不明白...... 基本上我已经创建了一个函数,我需要传递两个参数。

我的职能是:

function displayRoomDetails($customerRooms, $test)
{
    foreach ($customerRooms as $room) {
        $test.= $room->name;
    };
}

这是一个非常基本的功能,但是会为这个例子做。

现在,我正在创建模板以显示多个信息,我有3个不同的布局,我需要显示相同的信息但风格不同,所以我的方法是:

template1 .= '<span>';

if (!$customerRooms == "") {
    displayRoomDetails($customerRooms,"template1");
};

template1 .= '</span>';

它应该很容易理解,基本上我在所有不同的模板中调用相同的函数作为参数传递模板名称并尝试将结果附加到正确的模板。

我遇到的问题是: 根据这个例子,这里 - &gt;  http://www.w3schools.com/php/showphp.asp?filename=demo_function3

我应该能够像我一样完成这项工作,但是当我尝试时,当我调试我的函数时,$ template并不会像我那样接受传递的值,但它仍然被称为{{ 1}}而不是$test

我做错了什么?

由于

2 个答案:

答案 0 :(得分:2)

尝试以下更改:

function displayRoomDetails($customerRooms, &$test)

$template1 .= '<span>';
if ($customerRooms != "") {
  displayRoomDetails($customerRooms, $template1);
};
$template1 .= '</span>';

答案 1 :(得分:1)

根据我的理解,您希望使用template1

将一些文字附加到displayRoomDetailsFunction变量

要解决的一些问题:

  1. template1应为$template1
  2. 您应该传递$template1而不是"template1"(即变量本身而不是其名称)。
  3. 如果要修改此变量,您需要:
    • 将其传递为reference,您可以通过将函数的声明更改为:function displayRoomDetails($customerRooms, &$test)
    • 来执行此操作
    • 从函数返回新字符串,并在$template1阻止后添加return $test;并将呼叫更改为foreach
    • ,将其分配给$template1 .= displayRoomDetails($customerRooms,$template1);
  4. 附加说明:如果$customerRooms是一个数组,最好使用count()检查它是否为空,而不是!$customerRooms == "",有关详细信息,请参阅@ andrew的评论