PHP写的变量太多了

时间:2010-09-30 12:48:42

标签: php variables

我有以下代码:

require("class.XMLHttpRequest.php");
function hot($news){
    $url="https://localhost/search.aspx?search=".$news.""; 
 $ajax=new XMLHttpRequest();
 $ajax->setRequestHeader("Cookie","Cookie: host");
 $ajax->open("GET",$url,true);
 $ajax->send(null);
 if($ajax->status==200){
  $rHeader=$ajax->getResponseHeader("Set-Cookie");
  if(substr_count($rHeader, "Present!")>0) { return true; }
 }else{ return false; }
} 

$content1= hot("britney") ? "britney found" : "";
$content2= hot("gaga") ? "gaga found" : "";
$content3= hot("carol") ? "carol found" : ""; 

$filename = 'result.txt';
$handle = fopen($filename, 'a');
fwrite($handle, "$Content1\r\n");
fwrite($handle, "$Content2\r\n");
fwrite($handle, "$Content3\r\n");
fwrite($handle, "$Content4\r\n");
fclose($handle);

我想缩短脚本因为我有很多$ ContentN变量 也许就像foreach?

3 个答案:

答案 0 :(得分:3)

我会这样做:

$celebrities = array('britney','gaga','carol');
$filename = 'result.txt';
$handle = fopen($filename, 'a');

foreach($celebrities as $celebrity)
{
    if(hot($celebrity)) { fwrite($handle, "{$celebrity}\r\n"); }
}

fclose($handle);

如果您需要更多名人,只需将它们添加到阵列即可。

答案 1 :(得分:2)

这样的东西会非常接近你的实际代码,但可能不会被重新编写

for($i = 1 ; $i <= 4 ; $i++)
 fwrite($handle, "${Content$i}\r\n");

使用变量变量:http://php.net/manual/en/language.variables.variable.php

这里不是最好的解决方案:为什么不简单地使用数组呢?

$content[1]= hot("britney") ? "britney found" : "";
$content[2]= hot("gaga") ? "gaga found" : "";
$content[3]= hot("carol") ? "carol found" : ""; 
for($i = 1 ; $i <= 4 ; $i++)
 fwrite($handle, $Content[$i]."\r\n");

或者更好的是,使用 captaintokyo 的解决方案,因为您可能不希望文本文件中出现空行。

答案 2 :(得分:0)

这是一个简短的代码重构代码。更新了变量名称,数组中保存的趋势主题以及您询问的foreach。代码未经测试。

require("class.XMLHttpRequest.php");

$result_filename = 'result.txt';

$hot_topics = array(
  'britney',
  'gaga',
  'carol'
  );

$handle = @fopen($result_filename, 'a+');
if (!$handle) {
  exit("Unable to open $result_filename");
}

foreach($hot_topics as $topic) {
  if (is_hot($topic)) {
    fwrite($handle, "$topic found\r\n");
  }
}

fclose($handle);

exit("\ncomplete");

function is_hot($news) {
  $url = "https://localhost/search.aspx?search=".$news; 

  $ajax = new XMLHttpRequest();
  $ajax->setRequestHeader("Cookie", "Cookie: host");
  $ajax->open("GET", $url, true);
  $ajax->send(null);

  if ($ajax->status == 200) {
    $rHeader = $ajax->getResponseHeader("Set-Cookie");
    if (substr_count($rHeader, "Present!") > 0) {
      return true;
    }
  }
  return false;
}