@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). И чтобы в результате по порядке выдал список пользователей онлайн. Как такое сделать?
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 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
			//а тут уж твой код, дружище.
			}
 		}
	}
//зэ энд.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы