0
嗯如何解释? ;)我想我只是让糟糕的编码来说话:)PHP - 从另一个数组中的值填充数组中的变量
鉴于网址“模板阵列(截断易用性)
$default = array(
"/$market",
"/$market/catalog/productsaz/",
"/$market/catalog/products/$artid",
);
和市场的多维数组(截断方便使用)
$markets = array(
array(market => "/gb/en", storeid => "storeId=1", langid =>"langId=-1", storenumber=> "001", prodid=> "12345", artid=> "4525412"),
array(market => "/at/de", storeid => "storeId=2", langid =>"langId=-81", storenumber=> "003", prodid=> "12356", artid=> "8456125"),
array(market => "/be/nl", storeid => "storeId=19", langid =>"langId=-13", storenumber=> "008", prodid=> "12367", artid=> "4578542")
);
如何将两者混合在一起以便为每个市场获得解析的URL数组。
即
/gb/en
/gb/en/catalog/productsaz/
/gb/en/catalog/products/4525412
/at/de
/at/de/catalog/productsaz/
/at/de/catalog/products/8456125
/be/nl
/be/nl/catalog/productsaz/
/be/nl/catalog/products/4578542
当然array_merge似乎是显而易见的选择,但我似乎无法找出它是如何在这种情况下工作。所以,我没有尝试更长的手的方式,这虽然它是没有效率的,好像它应该工作给我,但没有(似乎从市场数组变量不解决)
这里是我有什么到目前为止:
function builder($clusterArray,$marketArray,$urlArray) {
if(isset($_POST['server'])) {
$server = $_POST['server'];
// DETERMINE THE CLUSTER
$cluster=false;
foreach($clusterArray as $n=>$c)
if(in_array($server,$c)) {
$cluster=$n;
break;
}
print("Server=" . $server . "and cluster=" . $cluster); //DEBUG
// DRAW THE TABLE
//print("<table><tr><th>MARKET</th>");
// LOOP THROUGH MARKETS AND IDS TO CREATE AN ARRAY OF URL'S
$urlsTohit = array();
$baseurl = "http://$server";
foreach($marketArray as $mkt) {
$market = $mkt['market'];
$storeid = $mkt['storeid'];
$langid = $mkt['langid'];
$storenumber = $mkt['storenumber'];
$prodid = $mkt['prodid'];
$artid = $mkt['artid'];
foreach($urlArray as $template){
array_push($urlsTohit,$baseurl . $template);
}
}
print_r($urlsTohit); //DEBUG
} else {
print("Oops! Seems like you forgot to select a server. Please go back and choose a server before clicking on Go!");
}
}
编辑:据@Eugen里克我已经更新我的功能是:
function preSurfBuilder($clusterArray,$marketArray,$urlArray) {
if(isset($_POST['server'])) {
$server = $_POST['server'];
// DETERMINE THE CLUSTER
$cluster=false;
foreach($clusterArray as $n=>$c)
if(in_array($server,$c)) {
$cluster=$n;
break;
}
print("Server=" . $server . "and cluster=" . $cluster); //DEBUG
// DRAW THE TABLE
//print("<table><tr><th>MARKET</th>");
// LOOP THROUGH MARKETS AND IDS TO CREATE AN ARRAY OF URL'S
$baseurl = "http://$server";
$result=array();
foreach ($urlArray as $u) {
foreach ($marketArray as $m) {
$uu=$u;
foreach ($m as $k=>$v)
$uu=str_replace('$'.$k, $v, $uu);
$result[]=$uu;
}
}
print_r($result);
} else {
print("Oops! Seems like you forgot to select a server. Please go back and choose a server before clicking on Go!");
}
}
和输出是一样的东西(部分):
Array ([0] =>/[1] =>/[2] =>/[3] =>/[4] =>/[5] =>/[6] =>/[7] =>/[8] =>/[9] =>/[10] =>/[11] =>/[12] =>/[13] =>/[14] =>/[15] =>/[16] =>/[17] =>/[18] =>/[19] =>/[20] =>/[21] =>/[22] =>/[23] =>/[24] =>/[25] =>/[26] =>/[27] =>/[28] =>/[29] =>/[30] =>/[31] =>/[32] =>/[33] =>/[34] =>/[35] =>/[36] =>/[37] => //catalog/productsaz/ [38] => //catalog/productsaz/ [39] => //catalog/productsaz/ [40] => //catalog/productsaz/ [41] => //catalog/productsaz/ [42] => //catalog/productsaz/ [43] => //catalog/productsaz/ [44] => //catalog/productsaz/ [45] => //catalog/productsaz/ [46] => //catalog/productsaz/ [47] => //catalog/productsaz/ [48] => //catalog/productsaz/ [49] => //catalog/productsaz/ [50] => //catalog/productsaz/ [51] => //catalog/productsaz/ [52] => //catalog/productsaz/ [53] => //catalog/productsaz/ [54] => //catalog/productsaz/ [55] => //catalog/productsaz/ [56] => //catalog/productsaz/ [57] => //catalog/productsaz/ [58] => //catalog/productsaz/ [59] => //catalog/productsaz/ [60] => //catalog/productsaz/ [61] => //catalog/productsaz/ [62] => //catalog/productsaz/ [63] => //catalog/productsaz/ [64] => //catalog/productsaz/ [65] => //catalog/productsaz/ [66] => //catalog/productsaz/ [67] => //catalog/productsaz/ [68] => //catalog/productsaz/ [69] => //catalog/productsaz/ [70] => //catalog/productsaz/ [71] => //catalog/productsaz/ [72] => //catalog/productsaz/ [73] => //catalog/p
编辑:修正了一个thinko($ DD VS $ d) – 2012-02-14 15:50:14
啊哈!我刚刚要回复...让我试试新的...... – Seer 2012-02-14 15:51:40
顺便说一句,结果是'// gb/en'和朋友(在开始时双斜杠):您的默认设置为'/ $ market'(一个斜线),$ market有“/ gb/en”(第二斜线)。你需要删除你的数据。 – 2012-02-14 15:54:15