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

из базы данных считываю значение

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

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

 

PHP:
  1. $spisiok_id = implode(‘,’, array_keys(array_filter(json_decode($json, true), fn($v) => $v === ‘on’)));

Теперь разирайтесь :D

 

Хотел провернуть с array_intersect вместо фильтра, а потом подумал — а смысл :)

 

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;
 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *