2010-02-02 37 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 

您只能'返回'一個變量,因爲它將'返回'該函數一旦你返回。如果你需要更多的數據而不僅僅是一個變量,你可以返回一個數組並在另一邊選擇它。