@askhatCH
Программист

Найти массив элемент массива где есть ключ online и ввести его значение по порядке?

У меня есть бот ВК. Он для беседы. Надо вот ввести список онлайн пользователей. Я вот добрался до такого этапа: С помощью метода messages.getConversationMembers я получаю список пользователей в беседе. Он возвращает JSON как массив. И т.д. Вот что получился:
if (preg_match("/\AОнлайн\Z/ui", $message)){
	$online_info = json_decode(file_get_contents("https://api.vk.com/method/messages.getConversationMembers?peer_id=2000000001&fields=online&access_token={$vk->token}&v=5.101")); 
	$online_users = $online_info->response->profiles;
	for ($i=0; $i < count($online_users); $i++) { 
		$answer = $online_users[$i]->online;
	}
}

Дальше я что-то не понял. Мозг кипит. Мне надо чтобы он дал индекс массива где есть ключ online (ну и его значение: 0 или 1). И чтобы в результате по порядке выдал список пользователей онлайн. Как такое сделать?
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 3
@Nujabes37
:DEATH
Если ты хочешь из json-строки получить ассоциативный массив, используй jsone_decode($json, true). Дальше просто дебажишь вардампами и работаешь со своим массивом.
Ответ написан
@vasiiil
https://www.php.net/manual/ru/function.uasort.php - просто отсортирует массив. если надо оставить только пользователей онлайн, то https://www.php.net/manual/ru/function.array-filter.php
Ответ написан
Deathfinite
@Deathfinite
Мастер по воде и костылям в PHP
если актуально, то я оставлю код, который мне нужен был для назначение админов через команду, точнее часть кода.
возможно, это тебе поможет.

UPD: если что, комментарии добавил
$json = file_get_contents("https://api.vk.com/method/messages.getConversationMembers?v=5.101&peer_id={$peer_id}&group_id={$group_id}&access_token={$VK_KEY}"); //посылаем messages.getConversationMembers. 
$A = json_decode($json,true); //декодируем в массив. можно и просто, но мне так удобнее.
if($A['error']){ //если же произошла ошибка, оповещаем об этом и останавливаем код
    	$vk->sendMessage($peer_id,"Произошла ошибка {$A['error']['error_code']} - {$A['error']['error_msg']}.\nПопробуйте предоставить мне доступ к переписке или роль Администратора."); exit();
		}
$a = $A["response"]["items"]; //не помню зачем уж. вроде как для удобства. 
$C = --$A["response"]["count"]; //тут какбы общее число людей, но массивы с нуля нумеруются, потому так.

for ($b = 0;$b<=$C;$b++) { //начнём с массива 0, закончим последним членом беседы.
	$var1 = $a[$b]; //открываем его краткую стату в messages.getConversationMembers
	if(array_key_exists('is_admin', $var1)){ //ищем, админ ли он
		if (mb_substr($var1["member_id"], 0,1) != "-"){ //и проверяем, что это не группа. |P
			//а тут уж твой код, дружище.
			}
 		}
	}
//зэ энд.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SMIT Москва
от 45 000 до 65 000 руб.
Zelo Москва
от 130 000 руб.
Amigoweb Магнитогорск
от 40 000 до 70 000 руб.