как правильно формировать многомерный массив?
Формирую многомерный массив на основании значений полей формы:
formArray = $('#ApplicationSettings').serializeArray();
console.log('formArray');
console.log(formArray);
optionsArray = {};
for (var key in formArray) {
optionsArray[formArray[key]['name']] = formArray[key]['value'];
}
console.log('optionsArray');
console.log(optionsArray);
в форме есть поля с названиями: dealStatusSelect[1], dealStatusSelect[2], dealStatusSelect[4]. Я хочу, чтобы они стали частями одного подмассива. но в массиве "optionsArray":
Object { projectBeginSelect: "UF_CRM_1584163639", "dealCategorySelect[1]": "7", "dealStatusSelect[1]": "409", "dealStatusSelect[2]": "417", "dealStatusSelect[4]": "423" }
то есть скрипт понимает dealCategorySelect[1] как отдельное имя переменной, а не как имя массива и ключ. Мне надо, чтобы в массиве было:
Object { projectBeginSelect: "UF_CRM_1584163639", "dealCategorySelect":["1": "409", "2": "417", "4": "423"]}
как это сделать? |
Не слишком понятно, чего вы хотите.
"dealCategorySelect[1]": "7" А куда потом эта 7 делась? А 1 куда? |
Цитата:
const old = {
projectBeginSelect: "UF_CRM_1584163639",
"dealCategorySelect[1]": "7",
"dealStatusSelect[1]": "409",
"dealStatusSelect[2]": "417",
"dealStatusSelect[4]": "423"
}
const o = {}
const a = Object.keys(old)
a.forEach(key => {
const i = key.indexOf('[')
if (i === -1) {
o[key] = old[key]
return
}
const a = key.match(/[^\[\]]+/g)
if (!o[a[0]]) o[a[0]] = []
o[a[0]][a[1] - 1] = old[key]
})
alert(JSON.stringify(o))
|
Полный код:
<script type="text/javascript" src="jquery-3.3.1.min.js" ></script>
<form id="ApplicationSettings">
<input type="text" name="dealStatusSelect[1]" value="1">
<input type="text" name="dealStatusSelect[2]" value="2">
<input type="text" name="dealStatusSelect[4]" value="4">
<input type="text" name="projectBeginSelect" value="UF_CRM_1584163639">
<input type="submit" >
</form>
<script>
formArray = $('#ApplicationSettings').serializeArray();
console.log('formArray');
console.log(formArray);
optionsArray = {};
for (var key in formArray) {
optionsArray[formArray[key]['name']] = formArray[key]['value'];
}
console.log('optionsArray');
console.log(optionsArray);
</script>
<?
$optionsArray = [];
if(isset($_REQUEST)){
foreach($_REQUEST as $k => $v){
$optionsArray[$k] = $v;
}
}
echo '<pre>';
print_r($optionsArray);
echo '</pre>';
?>
Почему в PHP массив сразу выглядит как
Array
(
[dealStatusSelect] => Array
(
[1] => 1
[2] => 2
[4] => 4
)
[projectBeginSelect] => UF_CRM_1584163639
)
а в JS надо извращаться. |
Чего то вы не договариваете.
Откуда берется "dealCategorySelect[1]": "7" ? Откуда вообще dealCategorySelect берется? |
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 06:11. |