За последние 24 часа нас посетил 70321 программист и 5687 роботов. Сейчас ищут 1167 программистов ...

из Массив JSON вытащить только номера с значением on

Тема в разделе "PHP для новичков", создана пользователем ufaclub, 16 фев 2023.

  1. ufaclub

    ufaclub Активный пользователь

    С нами с:
    29 авг 2011
    Сообщения:
    56
    Симпатии:
    0
    из базы данных считываю значение

    PHP:
    1. $json = $item_ajax['maincheck'];

    что дает вывод

    PHP:
    1. print $json;
    вот такой результат


    HTML:
    1.  {"1":"on","2":"on","3":"on","4":"on","5":"on","6":"on","7":"on","8":"on","9":"on","10":"on","11":"on","12":"on","13":"on","14":"on","15":"on","16":"on","17":"on","18":"on","19":"on","20":"on","21":"on","22":"on","33":"on","34":"on","35":"on","36":"on","37":"on","23":"on","24":"on","25":"on","26":"on","27":"on","28":"on","29":"on","30":"on","31":"on","32":"off","38":"off"}

    как мне создать переменную где будут все номера значение которых - on

    т.е

    $spisiok_id="1,2,.......31";

    через запятую.

    а вот 32 и 38 тут быть не должно так как у них значение off

    помогите пожалуйста с кодом что то не пойму как сделать
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    PHP:
    1. $spisiok_id = implode(',', array_keys(array_filter(json_decode($json, true), fn($v) => $v === 'on')));
    Теперь разирайтесь :D
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.840
    Симпатии:
    1.338
    Адрес:
    Лень
    Хотел провернуть с array_intersect вместо фильтра, а потом подумал - а смысл :)
     
  4. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    PHP:
    1. <?php
    2.  
    3. $json = '{"1":"on","2":"on","3":"on","4":"on","5":"on","6":"on","7":"on","8":"on","9":"on","10":"on","11":"on","12":"on","13":"on","14":"on","15":"on","16":"on","17":"on","18":"on","19":"on","20":"on","21":"on","22":"on","33":"on","34":"on","35":"on","36":"on","37":"on","23":"on","24":"on","25":"on","26":"on","27":"on","28":"on","29":"on","30":"on","31":"on","32":"off","38":"off"}';
    4.  
    5. $data = json_decode($json, true);
    6.  
    7. $onKeys = array();
    8. foreach ($data as $key => $value) {
    9.     if ($value == 'on') {
    10.         $onKeys[] = $key;
    11.     }
    12. }
    13.  
    14. $onKeysStr = implode(',', $onKeys); // объединяем ключи через запятую
    15. echo $onKeysStr;