如何使用PHP调用字符串中的函数

时间:2013-09-01 19:17:19

标签: php string function date html-table

我编写了这个php函数,用于在下拉选项标记中动态插入默认日期。在我的函数pickDate中,我用双引号回显了最后的字符串。然后在我的代码中,我有一个for循环,它产生一个新的字符串,并在字符串中我试图调用我的函数。 我的问题是,当我在我的字符串中调用pickDate()时,它会呈现pickdate()(字面意思),而不是函数的结果。看看我的代码,我的问题是:如何在双引号括起的字符串中调用函数。

以下是我的功能:

<?php
function pickDate() {
$dayArray=array();
global $month;
global $day;
$monthArray=array();

$d=1;
$monthArray=array('January','February','March','April','May','June','July','August','September','October','November','December');

$monthOption .="<select  name='month'>";

for($i=0; $i<31; $i++){
array_push($dayArray, "$d");
$d++;
}
for($i=0; $i<12; $i++){

$selected="";

if ($month == "$monthArray[$i]") {
$selected="selected='selected'";
}
$monthOption .="<option value='$monthArray[$i]'
$selected>$monthArray[$i] </option>"; 



}

$monthOption.="</select> <select name='day'>";

for($i=0; $i<31; $i++){

$selected="";

if ($day == "$dayArray[$i]") {
$selected="selected='selected'";
}
$monthOption .="<option value='$dayArray[$i]'$selected>$dayArray[$i] </option>"; 



}

$monthOption.="</select>";

echo "$monthOption";

}//end function
?>

我的功能正常。我想知道如何在下面的for循环中的字符串中调用它:

<?php
$xml = simplexml_load_file("gallery.xml");
$c1=count($xml->Picture);


for($i=0; $i<$c1; $i++){
$month =(string)$xml->Picture[$i]->picDate->month;
$day =(string)$xml->Picture[$i]->picDate->day;
$year =(string)$xml->Picture[$i]->picDate->year;


$displayFolder .="<form action='gallery.php' enctype='multipart/form-data' method='post' name='editPic' 

id='editPic'><tr><td>
pickDate()
<input type ='text' name='year' size='4'maxlength='4' 

value='$year'/></form></td> </tr>";

}

?>

然后我在下面的html表中输出displayfolder字符串:

<table border= "1px"><tr><td><?php 

print"$displayFolder";?></table>

所以问题再次是调用pickDate函数,因为它在一个字符串中,我想知道如何将pickDate()结果放在表中。我喜欢它是如何被双引号包围的。有人可以告诉我如何在字符串中正确调用函数,而不必更改我的字符串。

3 个答案:

答案 0 :(得分:4)

替换它:

$displayFolder .="<form action='gallery.php' enctype='multipart/form-data' method='post' name='editPic' 

id='editPic'><tr><td>
pickDate()
<input type ='text' name='year' size='4'maxlength='4' 

value='$year'/></form></td> </tr>";

有了这个:

$displayFolder .="<form action='gallery.php' enctype='multipart/form-data' method='post' name='editPic' 

id='editPic'><tr><td>
".pickDate()."
<input type ='text' name='year' size='4'maxlength='4' 

value='$year'/></form></td> </tr>";

上面唯一需要改变的是使用连接运算符(点)将pickDate()函数与字符串的其余部分隔离开来。此外,为了使其正常工作,您的pickDate()函数必须返回其结果而不是直接输出,否则只要定义$displayFolder,它就会输出其内容。要解决此问题,请将其替换为:

echo "$monthOption";

有了这个:

return $monthOption;

答案 1 :(得分:1)

  • 不要使用该函数来回显东西,这通常会减少对字符串打印位置的控制。只需返回内容并确定之后打印的位置。

而不是

echo "$monthOption";

尝试

return $monthOption;
  • 您没有评估字符串中的函数。要么将它包含在胡须中,要么更好,将你的字符串分开:

而不是

$displayFolder .="<form action='gallery.php' enctype='multipart/form-data' method='post'     name='editPic' id='editPic'><tr><td>
pickDate()
<input type ='text' name='year' size='4'maxlength='4' 
value='$year'/></form></td> </tr>";

尝试

$displayFolder .="<form action='gallery.php' enctype='multipart/form-data' method='post'     name='editPic' id='editPic'><tr><td>";
$displayFolder .=pickDate();
$displayFolder .="<input type ='text' name='year' size='4'maxlength='4' 
value='$year'/></form></td> </tr>";

答案 2 :(得分:0)

Concat php函数在字符串中

$str = "left string".pickDate()."right string";