2012-01-07 53 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等..)的目的。這不會在分頁上工作。