提取数据库数据并将其分组到数组中


Extracting and grouping database data to an array

我有一个名为"servers"的数据库字段该字段每行都有一个链接,该字段内容:

>http://www.rapidshare.com/download1>http://www.rapidshare.com/download2>http://www.rapidshare.com/download3>http://www.megaupload.com/download1>http://www.megaupload.com/download2>http://www.megaupload.com/download3>http://www.fileserve.com/download1>http://www.fileserve.com/download2>http://www.fileserve.com/download3

我想创建一个包含所有服务器名称的数组,并创建更多包含链接的数组。应该是这样的:

$servers = array(
  'rapidshare'        => array(
      'link1'             => 'http://www.rapidshare.com/download1',
      'link2'             => 'http://www.rapidshare.com/download2',
      'link3'             => 'http://www.rapidshare.com/download3'),
  'megaupload'        =>  array(
      'link1'             => 'http://www.megaupload.com/download1',
      'link2'             => 'http://www.megaupload.com/download2',
      'link3'             => 'http://www.megaupload.com/download3'),
  'fileserve'         =>  array(
      'link1'             => 'http://www.megaupload.com/download1',
      'link2'             => 'http://www.megaupload.com/download2',
      'link3'             => 'http://www.megaupload.com/download3')
);

这将完成任务:(确保域实际上显示在$domain变量中,因为它可能是$matches[1]…我记不清了)

$newStructure = array();
foreach($links as $link) {
    preg_match("/www'.([^'.])'.com/",$link,$matches);
    $domain = $matches[0];
    $currentLength = count($newStructure[$domain]);
    if($currentLength) {
       $newStructure[$domain]['link'.($currentLength+1)] = $link;
    } else {
       $newStructure[$domain] = array('link1'=>$link);
    }
}
$server = array(
    'http://www.rapidshare.com/download1',
    'http://www.rapidshare.com/download2',
    'http://www.rapidshare.com/download3',
    'http://www.megaupload.com/download1',
    'http://www.megaupload.com/download2',
    'http://www.megaupload.com/download3',
    'http://www.fileserve.com/download1',
    'http://www.fileserve.com/download2',
    'http://www.fileserve.com/download3'
);
$match = array();
$myarray = array();

foreach($server as $v) {
    // grab server name
    preg_match('/'.(.+)'./', $v, $match);
    $serverName = $match[1];
    // initialize new array if its the first link of that particular server
    if (!isset($myarray[$serverName])) {
        $myarray[$serverName] = array();
    }
    // count server array to check how many links are there, and make next link key 
    $linkKey = 'link' . (count($myarray[$serverName]) + 1);
    // store value
    $myarray[$serverName][$linkKey] = $v;
}
print_r($myarray);

嘿,也许这会对你有所帮助。但我看不出这些键的名称(链接1、链接2等)的用途。这对你的分页无效。