使用函数内部的值

时间:2010-02-02 15:21:16

标签: php function

是否可以使用在循环/函数外获得的值,使用或调用它的循环/函数?

下面是我的功能

function off($limit)
{
    $string=file_get_contents("feed.xml");
    $xml=simplexml_load_string($string);

    foreach ($xml->FOUND->CAT as $place)
    {
        $limits = $place->CORDS;
        $rate=$place->STARS;
        $phone=$place->PHONE;
    }
}

我把它叫到一个有html标签的php文件。是否可以将函数返回的值放入由XXXX标记的行中以显示?

<html>
<body>
<?php
off(‘57854’);
?>
<table width="200" border="1">
  <tr>
    <td>XXXXX</td>
    <td>XXXXX</td>
    <td>XXXXX</td>
  </tr>
  <tr>
    <td>XXXXX</td>
    <td>XXXXX</td>
    <td>XXXXX</td>
  </tr>
  <tr>
    <td>XXXXX</td>
    <td>XXXXX</td>
    <td>XXXXX</td>
  </tr>
</table>
</body>
</html>

我想知道有没有一种方法可以在函数中不包含html标签来显示。

任何帮助将不胜感激。

由于

6 个答案:

答案 0 :(得分:2)

您在函数中添加了return语句。然后你可以在“外面”使用它

答案 1 :(得分:2)

是的,你可以得到一个函数的结果并在外面使用它。例如:

function addSomething($a, $b)
{
    $sum = $a + $b;
    return $sum;
}

$mySum = addSomething(15, 45);

print $mySum;  // Will show 60

你只能'返回'一个变量,因为它会在你返回后“退出”这个函数。如果您需要的数据不仅仅是单个变量,您可以返回一个数组并在另一侧选择它。

答案 2 :(得分:2)

好吧,没有PHP就不能循环,所以你的HTML必须在循环中。但是如果有帮助的话,你可以从你的函数返回一个简化的数组:

function off($limit)
{
    $string = file_get_contents("feed.xml");
    $xml    = simplexml_load_string($string); 
    $return = array();

    foreach ($xml->FOUND->CAT as $place)
    {
        $return[] = array(
            'limits' => $place->CORDS,
            'rate' => $place->STARS,
            'phone' => $place->PHONE
        )
    }
    return $return;        
}

该函数现在构建一个结果数组,以返回给调用者。然后你可以循环遍历那个数组:

<html>
<body>
<?php
$arr = off('57854');
?>
<table width="200" border="1">
    <?php foreach($arr as $row): ?>
    <tr>
        <td><?php echo $row['limits']; ?></td>
        <td><?php echo $row['rate']; ?></td>
        <td><?php echo $row['phone']; ?></td>
    </tr>
    <?php endforeach; ?>
</table>
</body>
</html>

这样,你可以避免在你的函数中使用HTML,这总是一件好事 - 让你的逻辑与演示文稿分开。

答案 3 :(得分:0)

您需要将该值退出函数:

function foo() {
  return array("bar");
}

每次拨打foo(),我都能抓住它的返回值:

$items = foo(); // $items is now array("bar");

foreach($items as $item) {
  print "<td>" . $item . "</td>"; // <td>bar</td>
}

答案 4 :(得分:0)

有三种方式:

1.,将每个循环周转的结果保存到数组中,然后循环遍历数组

<table>
<?php foreach ($array as $a){
echo "<tr><td>$a</td></tr>";
} ?>
</table>

2.或者你通过循环(在off函数中)回显每一行

3.或者您使用ob_start启动缓冲区,然后将其保存到某个变量($result = ob_get_contents()

无论哪种方式,您都需要更多循环和一些echo s。

答案 5 :(得分:-1)

并非没有使每个功能变量全局

function func() {
  global $var1, $var2, ...;
  ...
}
?>
<td><?=$var1?></td>

注意:要使上述功能正常,必须启用短标记,否则必须执行<?php echo $var1 ?>