我正在尝试用PHP中的数组创建一个函数。使用名为simple_html_dom.php的库从站点中提取数据。
我已经制作了一段代码,它完全符合它的假设但重复性。所以我想用数组创建一个函数。
这里我正在尝试将代码用于此代码的函数
include('simple_html_dom.php');
$pos = 0;
$food = 1;
$col_num = array();
$col_food = array();
$html = file_get_html('website');
for($i = 0;$i<220;$i+=11){
// Extract all text from a given cell
//insert data into the array to the field it belongs to
array_push($col_num, $html->find('td', $i)->plaintext);
array_push($col_food, $html->find('td', $food)->plaintext);
$food += 11;
}
for($row = 0;$row<=19;$row++){
echo $col_num[$row].$col_food[$row]."<br>";
}
以下是我尝试使用数组
创建函数的代码include('simple_html_dom.php');
$pos = 0;
$food = 1;
$col_num = array();
$col_food = array();
$html = file_get_html('website');
function getcoleachrow($col = array(), $value){
for($value=$value;$value<220;$value+=11){
array_push($col, $html->find('td', $value)->plaintext);
}
for($rows = 0;$rows<=19;$rows++){
echo $col[$rows]."<br>";
}
}
getcoleachrow($col_num, $num);
getcoleachrow($col_food, $food);
我收到的错误消息是“注意:未定义变量:html ”和“致命错误:在非对象上调用成员函数find()“这是在功能代码中的array_push行。
答案 0 :(得分:1)
问题是$ html超出了范围。您需要将$ html传递给getcoleachrow函数,例如:
function getcoleachrow($col = array(), $value, $html){
for($value=$value;$value<220;$value+=11){
array_push($col, $html->find('td', $value)->plaintext);
}
for($rows = 0;$rows<=19;$rows++){
echo $col[$rows]."<br>";
}
}
getcoleachrow($col_num, $num, $html);
是的,我同意Marc B - 在这里寻找有关该主题的更多信息的好地方:http://php.net/manual/en/language.variables.scope.php
答案 1 :(得分:-1)
您需要在函数中添加global $html;
...
function getcoleachrow($col = array(), $value){
global $html;
for($value=$value;$value<220;$value+=11){
array_push($col, $html->find('td', $value)->plaintext);
}
for($rows = 0;$rows<=19;$rows++){
echo $col[$rows]."<br>";
}
}