簡體   English   中英

PHP數組中的鍵操作

[英]Key Manipulation In PHP Array

因此,我有一個函數,可以合並兩個數組,並用$ marketArray中的值替換$ template數組中的“變量”。 這是一些類似的貢獻者提供的很好的代碼。 現在由於一項新要求,我需要進行一些切換。

首先,我需要使其成為一個數組陣列,該數組實質上是按市場對物料進行分組,而不是在一個大型陣列中列出一個龐大的清單。 其次,我需要新數組中的鍵具有市場計數器格式

例如gb / en-1,gb / en-2等(這是JQuery獲得的ID,它可以用來確定結果以后的位置。

因此,我輸入了兩個新條目(標記為// NEW),這些條目將獲取市場價值並啟動一個計數器。 我的大腦在痛苦的下一步中扭動着!

$ marketArray是像這樣的市場的多維關聯數組(但還有更多的市場!)

$markets = array(
array(market => 'se/sv', storeid => 'storeId=66', langid => 'langId=-14', storenumber => '109', prodid => '741586', artid => '22112334'),
array(market => 'at/de', storeid => 'storeId=82', langid => 'langId=-11', storenumber => '234', prodid => '374637', artid => '45678214')
);

$ template是一堆url模板,需要根據市場進行操作(再次縮短)

$template = array (
    '/$market',
    '/$market/catalog/',
    '/$marketproducts/$artid',
    'StockSearchForm?&productId=$prodid'
);

這是功能

function urlBuilder($marketArray,$template) {
$urlstohit=array();
foreach ($marketArray as $m) {
$market = $m['market']; //NEW
$counter = 1; //NEW
    foreach ($template as $t) {
        $tt=$t;
        foreach ($m as $k=>$v)
            $tt=str_replace('$'.$k, $v, $tt);
            $urlstohit[]=$tt;
    }
}
return ($urlstohit);
}

所以我想要達到的目標不是像一個巨大的陣列

$urlstohit (
[0] =>  '/se/sv/catalog/categories/',
[1] =>  '/se/sv/catalog/news/',
[2] =>  '/se/sv/catalog/categories/departments/',
[3] =>  '/se/sv/search/?query=giant'
[4] =>  '/at/de/catalog/categories/',
[5] =>  '/at/de/catalog/news/',
[6] =>  '/at/de/catalog/categories/departments/',
[7] =>  '/at/de/search/?query=giant'
)

按市場分組並以市場計數器為鍵的md數組

$urlstohit (
     ['se/sv'] => array(
    ['se/sv-1'] =>  '/se/sv/catalog/categories/',
    ['se/sv-2'] =>  '/se/sv/catalog/news/',
    ['se/sv-3'] =>  '/se/sv/catalog/categories/departments/',
    ['se/sv-4'] =>  '/se/sv/search/?query=giant'
      ),
     ['at/de'] => array(
    ['at/de-1'] =>  '/at/de/catalog/categories/',
    ['at/de-2'] =>  '/at/de/catalog/news/',
    ['at/de-3'] =>  '/at/de/catalog/categories/departments/',
    ['at/de-4'] =>  '/at/de/search/?query=giant'
     )
)

嘗試這個

function urlBuilder($marketArray,$template) {
    $urlstohit=array();
    foreach ($marketArray as $m) {
        $market = $m['market'];
        $counter = 1;
        $urlstohit[$market] = array(); / ADDED
        foreach ($template as $t) {
            $tt=$t;
            foreach ($m as $k=>$v)
                $tt=str_replace('$'.$k, $v, $tt);
                $urlstohit[$market][$market.'-'.$counter]=$tt; // EDITED
                $counter++; // ADDED
            }
        }
    } // ADDED
    return ($urlstohit);
}

我已經標記了我添加和編輯的行(我想您還缺少大括號)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM