2012-01-07 50 views
0

我有一个数据库中的字段名为“服务器” 此字段在每行一个链接,这个领域的内容:提取和数据库数据分组到一个数组

 
> 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') 
); 
+0

你的问题是什么? – Borodin 2012-01-07 16:41:41

回答

1

这将这样的伎俩:(确保站点实际上是显示$域变量了,但因为它可能是$匹配[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); 
    } 
} 
+0

谢谢,掩盖相处,我也可以使用你的一些代码! – user999705 2012-01-08 12:44:26

+0

当然可以。如果你喜欢它并且它对你有帮助,你可以用复选标记接受答案吗?在堆栈溢出时,当您回答问题并被接受时,它会提高您的评分,这有助于您日后回答问题。谢谢。 – hackartist 2012-01-08 20:34:31

0
$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); 

嘿,也许这会帮助你。但我没有看到这些名称的关键(link1,link2等..)的目的。这不会在分页上工作。