如何在PHP中使用数组创建函数

时间:2013-11-29 16:43:05

标签: php arrays function

我正在尝试用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行。

2 个答案:

答案 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>";
   }

}