从循环外定义的函数传递变量但在循环内调用

时间:2014-10-22 05:14:04

标签: php function loops

我想调用一个在循环外定义但在循环内部调用的函数,然后每次循环运行时从循环外部的循环内部的函数定义访问变量 这里是数据库连接,包含while循环和函数调用,然后访问""功能页面($ h)中定义的$ second_trim变量""在while循环中

  <html>
  <head>
  <title></title>
 </head>     
 <body>
 <?php
 $getquery = mysql_query("SELECT * FROM table WHERE $construct LIMIT $start, $per_page");
 while($runrows = mysql_fetch_assoc($getquery))
 {
 $title = $runrows ['Title'];
 $url = $runrows ['URL'];
 page($url);
 echo "<div style='clear: both;position:relative;border:1px solid #A5BEBE;background-color:   white;'>
 $second_trim</div>";
}
function page($h){
$i=fopen($h,"r");
$contents=stream_get_contents($i);
fclose($i);
$contents=strtolower($contents);

$start='<div';

$start_pos=strpos($contents,$start);
$first_trim=substr($contents,$start_pos);

$stop='</div>';
$stop_pos=strpos($first_trim,$stop);

$second_trim=substr($first_trim,0,$stop_pos);
}
?>
</body>
</html>

while循环从数据库中获取url并通过&#34; page($ url)&#34;在循环中调用的函数定义函数&#34;函数页面($ h)&#34;在循环之外它将获得$ second_trim中所需的内容,每次运行时它将在echo语句的循环内显示但是我得到了错误就像     致命错误:调用未定义的函数crawl_page() 他们是我面临的一些语法问题,我很难找到很多搜索后他们可以做到这一点PLZ帮助我

1 个答案:

答案 0 :(得分:0)

您需要定义您的功能 - &gt;在循环之前function page($h){...}。其次,返回函数末尾的$second_trim,然后将函数调用设置为变量

...your html...
<?php

function page($h){
      $i=fopen($h,"r");
      $contents=stream_get_contents($i);
      fclose($i);
      $contents=strtolower($contents);
      $start='<div';
      $start_pos=strpos($contents,$start);
      $first_trim=substr($contents,$start_pos);   
      $stop='</div>';
      $stop_pos=strpos($first_trim,$stop);
      $second_trim=substr($first_trim,0,$stop_pos);

      //return the value
      return $second_trim;
}


$getquery = mysql_query("SELECT * FROM table WHERE $construct LIMIT $start, $per_page");
while($runrows = mysql_fetch_assoc($getquery)){
      $title = $runrows ['Title'];
      $url = $runrows ['URL'];

      //save the function returned value to variable
      $second_trim = page($url);

      echo "<div style='clear: both;position:relative;border:1px solid #A5BEBE;background-color:   white;'>
      $second_trim</div>";
}
?>
...your html...