@Yrets169

Как перевести в ассоциативный массив?

Доброго времени суток, как из нумерованного массива из скриншота сделать ассоциатиный?
php
foreach ($get_user as $user){?>
                  <input type="checkbox" class="options" name="options[]" value="<?=$user['email']?>">
                  <label for='cb' class="checkbox"><?=$user['name']?></label>
                  <?php
              }
              ?>


js
var options = new Array();
        $('input[name="options[]"]:checked').each(function(){
            options.push($(this).val());
            options.push($(this).next('label').text());
        });


из данного кода получается результат:
6058efe5b699f581737087.png

_________________________________________________________________________________________________________________

Как получить результат такого вида:

option{
"ivanoff@gmail.com" => "Иванов",
"doe@gmail.com"=> "Doe"
}
  • Вопрос задан
  • 181 просмотр
Решения вопроса 2
Tim-A-2020
@Tim-A-2020
примерно так
let obj = {}
$('input[name="options[]"]:checked').each(function(){
     obj[$(this).val()] = $(this).next('label').text()
});
Ответ написан
@rotarepmipoleved
var options = {};
$('input[name="options[]"]:checked').each(function(){
    options[$(this).val()] = $(this).next('label').text();
});


Получите:
options = {
    "ivanoff@gmail.com": "Иванов",
    "doe@gmail.com": "Doe"
}


Возможно, Вам будет интересно сделать это через Map.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
nuykon
@nuykon
Full Stack Developer
Вы не все теги указали, и отвечающие вам видимо не знают / либо плохо знают php.
В целом они дали вам ответ наполовину верный.

Ассоциативных массивов в js нет, есть объект. Массивы и объекты в js и php - разные вещи.

Чтобы объект js перевести в ассоциативный массив php, необходимо этот объект загнать в json строку, а в php декодировать json.

В js коде нужно сделать как вам уже ранее ответили + загнать объект в json:
const json = JSON.stringify(options);

Отсылаете json на бекенд, а там примерно так:
$json = file_get_contents('php://input');
$options = json_decode($json, true);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Market-place Ростов-на-Дону
от 100 000 до 200 000 ₽
21 июн. 2024, в 22:53
1000 руб./за проект
21 июн. 2024, в 22:12
5000 руб./за проект
21 июн. 2024, в 21:41
20000 руб./за проект