功能不包括在内,为什么?

时间:2013-06-05 21:05:00

标签: php function include

我的代码有什么问题??? :

function my_function()
{
$states = array('schwarz', 'rot', 'blau');

$path = '';

foreach ($states as $state) {
    $testPath = sprintf('transactions/Ordner/%s.png', $state);

    if (file_exists($testPath)) {
      $path = $testPath;
      echo $path;
    }
    else {
      $defaultPath = "inventory_images/8.jpg";
      echo $defaultPath;
    }
}
}


$imagesPerLine = array(1=>2, 2=>3); $default = 4;
$lines = array(1, 2, 3);
$html="";
foreach ($lines as $line) {
if (!isset($imagesPerLine[$line])) {
  $imagesPerLine[$line] = $default;
}
$html.= "<tr>\n";
for ($i = 1; $i <= $imagesPerLine[$line]; $i++) {
  $html.=sprintf("<td>%s</td>\n", my_function());
}
$html.="</tr>\n";

}
echo $html;  

我想,我将my_function()包含在“td-tag”中,但它不起作用,因为我的变量($ path和$ defaultPath)都没有被回显。 我找不到我的错误,你能帮助我吗?...问候

1 个答案:

答案 0 :(得分:1)

您应该return而不是echo

为简化起见,我们将您的代码更改为:

$text = my_function();
$html = sprintf("<td>%s</td>\n",$text);

出于所有实际目的,这与原始代码相同。

您的my_function()来电包含echo声明。评估它们并发送输出。函数本身没有return语句,因此您的代码实际上变为:

echo "something";
$text = null;
$html = sprintf("<td>%s</td>",$text);

使用return代替您的代码正常工作。