2012-11-21 254 views
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總數會有所不同(可能是數百個),是更快得到我們所用爆炸或substr_count工作的人數是多少? (問題1

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

OR

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

然後,我怎樣才能在每個組中劃分likeslist $分成較小的組通過各ID(的比方說,5)和環? (question question 2

+1

你可以爆炸成一個列表,像你這樣,並使用'for'循環每5個標識追加,並添加到數組中。無論如何,你爲什麼要把它分成更小的組?只需循環遍歷整個列表... –

+0

我有一個喜歡的列表,並希望查詢Facebook圖形API,通過傳遞多個ID到API來找出每個喜歡的類別(例如電視節目,音樂等)一次(每次5個) – sinisterfrog

+1

您可以使用'array_chunk'將一個數組拆分爲塊,但是如果要以任何方式遍歷所有組中的所有ID,那麼該怎麼辦? – jeroen

回答

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); 
} 
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++; 
}