@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"
}
  • Вопрос задан
  • 194 просмотра
Решения вопроса 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);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы