1 回答

TA貢獻1806條經驗 獲得超8個贊
通常你會使用array_merge_recursive來實現這一點,但它不會保留命名鍵,所以我寫了一個小array_join
函數來讓生活更輕松:)
function array_join($value, &$result) {
? ? if (!is_array($value)) {
? ? ? ? $result = $value;
? ? ? ??
? ? ? ? return;
? ? }
? ??
? ? foreach ($value as $k => $v) {
? ? ? ? array_join($v, $result[$k]);
? ? }
}
$result = [];
foreach ($mainArray as $entry)
{
? ? parse_str($entry['name'] . '=' . $entry['value'], $nameArray);
? ? array_join($nameArray, $result);
}
我們只需遞歸調用 array_join 直到該值不再是數組。注意&
中&$result
的array_join
.?我們傳遞數組中當前位置的引用。
為了充分利用parse_str
我還通過附加添加了該值=<value>
工作示例。
為您的下一篇文章提供專業提示。使用var_export給我們一個數組,可以將其復制粘貼為代碼:)
編輯
更簡單的解決方案,帶有“邪惡”輸入的轉義值。
foreach ($mainArray as $entry)
{
? ? $stringVarArray[] = $entry['name'] . '=' . urlencode($entry['value']);
}
parse_str(implode('&', $stringVarArray), $result);
var_dump($result);
工作示例。
- 1 回答
- 0 關注
- 122 瀏覽
添加回答
舉報