2013-03-23 117 views
0

我将文本区域发布到我的php脚本中,然后为文本区域的每一行执行一个循环,然后再次使用文本区域循环中的数据。然后我试图为每个数组设置一个数组,并在最后为所有数组检索一个数组。但是我的代码是给我的错误:在两个循环中设置数组

if (isset($_POST['submit'])) { 
     $entries = array(); 
    $text = trim($_POST['facebookpage']); 
    $text = explode("\n", $text); 
    foreach ($text as $line) { 
     $data = $html2->find("table.profileInfoTable"); 
     $text2 = trim($data[0]); 
     $text2 = explode("<tr>", $text2); 
     foreach ($text2 as $line) { 
      if (strpos($line, 'Location') !== false) { 
       $location = $line; 
      } 
     } 
     $data1 = $html2->find("table.profileInfoTable"); 
     $text2 = trim($data1[0]); 
     $text2 = explode("<tr>", $text2); 
     foreach ($text2 as $line) { 
      if (strpos($line, 'Email') !== false) { 
       $email = $line; 
      } 
     } 
    $mainarray = array("Email" => $email, "Location" => $location); 
    array_push(($mainarray),$entries); 
    } 
    var_dump($entries); 
}` 

而且错误是:

Fatal error: Only variables can be passed by reference in /home2/statonme/public_html/scraper.php on line 61 

回答

1

通常,PHP的错误信息给你的什么错你的脚本一个非常好的主意。

我不知道脚本中的'第61行'是什么,但我相信如果你把任何东西放在括号里面,它就被认为是'等式'......这意味着($main_array)不是一个变量......你不能改变方程。你只能改变变量。

尝试清除$main_array中的array_push(($mainarray),$entries);(使其成为:array_push($mainarray, $entries);)的括号,然后返回结果。

+0

感谢您的答复,已使得它做点什么但是在浏览器窗口仅仅是卡住加载了。我想这是在我尝试写入数组的时候做的。 – 2013-03-23 07:45:09

+0

请转到:http://simonstaton.co.uk/scraper.php并在http://www.facebook.com/MauiNuiBotanicalGardens中输入表单然后单击提交并查看它的作用 – 2013-03-23 07:47:36

+0

@SimonStaton我相信会发生这种情况,因为你在之前的代码中有一个无限循环。如果内存服务,PHP首先解析整个脚本,以了解它必须做什么,并提醒你明显的错误......它不知道该怎么做。你的代码现在在语法上是正确的,但这并不意味着你的代码是完美无瑕的。 – 2013-03-23 07:50:10

1

我认为你有反向的参数array_push。您要添加的数组应该是第一个参数,其余参数是要添加的元素。因此,它应该是:

array_push($entries, $mainarray); 

或者更简单地说:

$entries[] = array("Email" => $email, "Location" => $location); 
+0

啊,完全错过了。我被错误消息占据了,我没有看到更大的图片。对于+1。 – 2013-03-23 08:02:50