그래서 $ array 배열에있는 "variables"를 $ marketArray의 값으로 대체하는 두 개의 배열을 병합하는 함수가 있습니다. 일종의 기여자가 작성한 멋진 코드입니다. 이제는 새로운 요구 사항으로 인해 작업을 약간 전환해야합니다.PHP 배열의 키 조작
먼저 하나의 큰 배열에 하나의 거대한 목록 대신 시장별로 물건을 그룹화하는 배열로 만들 필요가 있습니다. 둘째, 새 배열의 키가 시장 카운터 형식이어야합니다.
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')
);
$ 템플릿 (다시 단축) 시장별로 시장을 조작 할 필요가 URL 템플릿의 무리입니다
여기$template = array (
'/$market',
'/$market/catalog/',
'/$marketproducts/$artid',
'StockSearchForm?&productId=$prodid'
);
6,그래서 내가 무엇을 달성하려고하는 대신 시장 카운터 시장별로 그룹화
$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의 배열과 같은 하나 개의 거대한 배열입니다 기능
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 (
['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'
)
)
루프가 너무 많습니다. 'array_walk_recursive'를 사용하는 것은 어떻습니까? 배열이 아닌 특정 요소로 작업하는 것이 더 쉬울 것입니다. – YuS
모든 언어로 복잡한 배열 시나리오를 사용하여 php에 솔직히 익숙해졌습니다. 따라서 array_walk_recursive에 대해서는 아무 것도 몰랐습니다. 지금 나는 그렇게한다. @liquorvicar로부터 좋은 대답을 얻었지만, 나에게 유용 할 것이다. 그래서 새로운 것을 보아 주셔서 감사합니다! – Seer