Php 将逗号分隔的like字符串拆分为更小的部分

Php 将逗号分隔的like字符串拆分为更小的部分,php,facebook,string,loops,Php,Facebook,String,Loops,将一个由50++个数字(FB页面ID)组成的逗号分隔的列表拆分成更小的块并一次处理n个数字的最佳方法是什么?列表如下所示: $likeslist="266037406871517,81337462601,34782298000891,56859608486,8797601255,48126111909968,8807449704,3634204295,6840064056,16627954050,7581229254,282681243370,356780606553962,2075497460

将一个由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


那么,我如何将$likeslist划分为更小的组(比如说5个组)并循环遍历每个组中的每个ID?(问题2

使用多维数组

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

继续做一个大的阵列。它必须非常大,才能耗尽所有内存(您可以在配置中更改内存限制)

要处理列表的各个部分,只需使用循环和
array\u 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);
}
$likeslist=分解(',',$likeslist);
$listLen=计数($likeslist);
$chunkSize=5;

对于($offset=0;$offset)您可以像您一样将其分解为一个列表,并使用
for
循环每5个ID追加一个ID,然后添加到一个数组中。您为什么还要将其划分为更小的组?只需循环整个列表……我有一个喜欢列表,希望查询Facebook graph API以了解每个喜欢的类别(例如,电视节目、音乐等)通过一次向API传递多个id(一次5个),您可以使用
array\u chunk
将一个数组拆分为多个块,但如果您要以任何方式循环所有组中的所有id,那又有什么意义呢?
$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++;
}
$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);
}