0

50 ++の数値(FBページID)のコンマ区切りリストを小さなチャンクに分割し、一度にn個ずつ処理するための最良の方法は何ですか?リストは次のようになります。

$likeslist="266037406871517,81337462601,34782298000891,56859608486,8797601255,48126111909968,8807449704,3634204295,6840064056,16627954050,7581229254,282681243370,356780606553962,207549746039055,13708123117519,204852972922619,407056596017784,584207664985882,11141618921610,66707529019,271953746236343,9576298621,40575497158,29252725868524,210237443769975,469586875072133,32693104762450,262744428996,506144412803606,52385706779438";

$ likeslistの総数は変動するため(数百になる可能性があります)、explodeまたはsubstr_countを使用して作業している総数を取得する方が速いですか?(質問1

$likesarray = explode(",", $likeslist);
$result = count($likeslist);

また

$listtotal = substr_count($likeslist, ",") +1;

次に、$ likeslistを小さなグループ(たとえば5つ)に分割し、各グループ内の各IDをループするにはどうすればよいですか?(質問2

4

2 に答える 2

0

さあ、大きな配列を作りましょう。すべてのメモリを使い果たすにはかなり大きくする必要があります(構成でメモリ制限を変更できます)。

リストのセクションを処理するには、ループとarray_slice()関数を使用するだけです。

$likeslist = explode(',', $likeslist);    
$listLen = count($likeslist);
$chunkSize = 5;

for($offset=0; $offset<$listLen; $offset+=$chunkSize) {
    $subList = array_slice($likeslist, $offset, $chunkSize);
    // do whatever to your sublist 
    print_r($subList);
}
于 2012-11-21T00:53:25.323 に答える
0

多次元配列を使用します。

$likes = explode(",", $likesList);
$l5 = array(); // multi-dimensional array containing arrays of only 5 likes
$i = 0; // counter for how many items we have per sub-array
$c = 0; // counter for what index of $l5 we are on
foreach($likes as $l) {
    if ( $i >= 5 ) {
        $c++; // increment array index
        $i = 0; // reset counter for the next 5 entries
    }
    $l5[$c][] = $l;
    $i++;
}
于 2012-11-21T00:43:09.977 に答える