2012-03-20 75 views
0

我想要做的事像波紋管使用PHP:組合2個陣列數據

$turl=array(trim($params->get('c2'))); 
$tname=array(trim($params->get('cn2'))); 

和要顯示的每個$turl與每個$tname

我想是這樣的:

$result=array_combine($turl,$tname); 
print_r($result); 

但考慮的結果:

Array ([http://184.107.144.218:8282/,http://184.107.144.218:8082/] => ABC Radio,AHH Radio) 

不過,我想是這樣的:提前

Array ([http://184.107.144.218:8282/=> ABC Radio, 
http://184.107.144.218:8082/=> AHH Radio) 

感謝

回答

0

也許你想要使用代碼s imilar這樣:

$turl = explode(',',trim($params->get('c2'))); 
$tname = explode(',',trim($params->get('cn2'))); 

$result=array_combine($turl,$tname); 
print_r($result); 

的錯誤似乎是在$ turl和$ TNAME陣列創建的陣列組合應該工作打算

很顯然,我想補充一些檢查,如,例如,有兩個數組大小相同?

附錄
在你comment你給我的是什麼樣的回報$params->get如果調用參數「C2」和「CN2」。

$params->get('c2')="hoicoimasti.com,google.com" 
$params->get('cn2')="hoicoi,google". 

我給你做的示例代碼做了什麼要求,或者至少我在想你試圖獲得什麼。不同的代碼用不同的結果是:

$turl = explode(',',trim($params->get('c2'))); 
$tname = explode(',',trim($params->get('cn2'))); 

$result=array_map(function($x,$y){return $x.','.$y;},$turl,$tname); 
print_r($result); 

,或者,如果你想獲得一個字符串:

$result=join(',',array_map(function($x,$y){return $x.'=>'.$y;},$turl,$tname)); 
print_r($result); 

你可以得到任何想要的結果修改前面的例子之一。

包住導致一個選項,您需要的array_map用戶功能的一個微小的變化:

$result=join("\n",array_map(
    function($x,$y){ 
     return "<option>$x=>$y</option>"; 
    }, 
    $turl, 
    $tname 
)); 
print_r($result); 

PHP < 5。3版本
在全球範圍內

function formatOption($x,$y){ 
    return "<option>$x=>$y</option>"; 
}; 

,並把這個函數聲明地方,那麼你的代碼將變爲:

$result=join("\n",array_map('formatOption', $turl, $tname)); 
print_r($result); 

如果可能的話,我將不會擾亂與功能全局命名空間像formatOption, 但是當匿名功能不可用時

Re ference

+0

感謝您的答覆。是的,兩個數組的大小相同。但是你的代碼不工作。輸出如下:Array([Array] => Array([0] => ABC Radio [1] => AHH Radio)) – jibon57 2012-03-20 20:48:33

+0

前兩行不需要'array()'...'explode '返回一個數組... – keithhatfield 2012-03-21 00:16:17

+0

@dleiftah:你說得對。固定 – Eineki 2012-03-21 05:40:23