2011-10-17 12 views
0

更新をより効率的に処理するためには、サイトのリストを手配しなければなりません。文字列(リスト)を配列に変換し、複数の行でcsvに出力します

これを行うには、リストを生成する必要があります(これは、私が提示する形式でなければなりません)。これを配列に変換して項目を簡単にスクロールします。ただし、リストをシャッフルした後にリストから30個の異なるサイトを選択し、.CSV列に書き込んでから(うまくいけば)、すすぎ、繰り返します。つまり、リストが終了するまで、ArrayIteratorの最後の位置に戻り、そこから取り出します。 .CSVファイルの30個のサイトごとに独自の列に追加します。

これまでのところ、私はそれを動作させることができません。残りである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
# 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)); 
+0

ナイス!本当にありがとう!!! 固定コードの最後の行には、これを使用する可能性のある人には、閉じることがありません)。 は、次のとおりです。 file_put_contents($ sTargetFileName、implode(PHP_EOL、$ aResult)); – RmH

関連する問題