我必须安排网站列表,以便更有效地处理更新。
为此,我在其他地方生成一个列表(必须采用我将呈现的格式)将其转换为数组以轻松滚动项目,尽管只有在我首先对列表进行洗牌后才能完成,所以我可以随机选择从该列表中取出30个不同的站点并将它们写入.CSV列(希望如此),然后冲洗并重复,即迭代回到ArrayIterator的最后位置并从那里取出,直到列表结束,我的目标是每次写入30个站点放在.CSV文件中的自己的列中。
到目前为止,我无法让它发挥作用。其余的CSV部分很好,但在CSV上它们都显示如下:
site1.com
site2.com
.
.
.
site1000.com
应该是:
site1.com site31.com site62
site30.com site61.com site92.com
我一直在寻找这个...有人可以检查出来或者投入几行来完成这个脚本..我认为对于一些经验丰富的人来说这不应该是一件大事。
<?php
$list = 'site1.com
site2.com
.
.
.
site1000.com ';
$Sites = explode("\n",$list);
$Sites = preg_replace('/\s+/','',$Sites);
shuffle($Sites);
$Array_size = count($Sites);
foreach ($Sites as $U_val){
$D++;
}
echo $D;
echo '<br><hr>';
$Sites = new NoRewindIterator(new ArrayIterator($Sites));
$i =0;
for($R=0;$R<=$D;$R++){
Run($Sites);
}
function Run($array){
$fp = fopen('S_list.csv', 'a+');
foreach ($array as $val){
$amount_to_run = 20;
$i++;
if($i<=$amount_to_run){
$Write = explode("\n",$val);
$Write = preg_replace('/\s+/','',$Write);
fputcsv($fp, $Write);
} else{
echo '<br><hr>';
break;
}
close($fp);
}
?>
答案 0 :(得分:0)
# args
/**
* List of sites
* @var string
*/
$sSites = '...';
$nChunkSize = 30;
$sTargetFileName = 'target.csv';
# code
$aSites = array_map('trim', explode("\n", $sSites));
$aResult = array();
shuffle($aSites);
foreach (array_chunk($aSites, $nChunkSize) as $aRow){
$aResult[] = implode(',',$aRow);
} // foreach
file_put_contents($sTargetFileName, implode(PHP_EOL, $aResult));