2010-02-02 36 views
4

是否可以使用在使用或调用函数的循环/函数外的循环/函数内获得的值?下面在函数外部使用值

是我的功能

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标签内的功能。

任何帮助将不胜感激。

感谢

回答

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。

+0

为什么downvote?这正是OP要求的,有一个明确的例子。 – 2010-02-02 15:33:05

+0

非常感谢:D – LiveEn 2010-02-02 16:52:47

2

你把return声明你的函数。那么你可以使用它的“外部”

-1

不是没有使每一个函数变量全球

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

注:以上工作,必须启用短标记,否则,你所要做的<?php echo $var1 ?>

0

你需要返回值该功能的:

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

任何时候,我打电话foo(),我将能够赶上它的换货政... Rn值:

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

foreach($items as $item) { 
    print "<td>" . $item . "</td>"; // <td>bar</td> 
} 
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。

2

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

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

$mySum = addSomething(15, 45); 

print $mySum; // Will show 60 

您只能'返回'一个变量,因为它将'返回'该函数一旦你返回。如果你需要更多的数据而不仅仅是一个变量,你可以返回一个数组并在另一边选择它。