Оптимизация PHP
Всем привет! У меня есть такой вот код:
$res = array();
$i2 = 0;
for($i = 0; $i <10;$i++){
if($table['users'][$i]['value'] == null){
break;
}
$res['users'][$i2]['value']=$table['users'][$i]['value'];
$res['users'][$i2]['user_id']=$table['users'][$i]['user_id'];
$res['users'][$i2]['name']=$table['users'][$i]['name'];
$i2++;
}
$mesto;
for($i3 = 0; $i3<count($table['users']);$i3++){
if($user_id == $table['users'][$i3]['user_id']){
$mesto = $i3+1;
break;
}
}
$res['currentTop'] = $mesto;
$json = json_encode($res, JSON_UNESCAPED_UNICODE);
echo $json;
$table - Это декодированный json, в table есть массив users, в котором объекты, в каждом по три поля value,user_id,name Примерно JSON выглядит так:
{
"users": [{
"value": "994954359439",
"user_id": 2,
"name": "Антон Пискорскйи"
}, {
"value": 99999,
"user_id": 99999,
"name": "Антон Пискорскйи"
}, {
"value": 99998,
"user_id": 99998,
"name": "Антон Пискорскйи"
}, {
"value": 99997,
"user_id": 99997,
"name": "Антон Пискорскйи"
}, {
"value": 99996,
"user_id": 99996,
"name": "Антон Пискорскйи"
}, {
"value": 99995,
"user_id": 99995,
"name": "Антон Пискорскйи"
}, {
"value": 99994,
"user_id": 99994,
"name": "Антон Пискорскйи"
}, {
"value": 99993,
"user_id": 99993,
"name": "Антон Пискорскйи"
}, {
"value": 99992,
"user_id": 99992,
"name": "Антон Пискорскйи"
}, {
"value": 99991,
"user_id": 99991,
"name": "Антон Пискорскйи"
}]
}
Самих таких объектов может быть 100.000 и более. Выше приведённый код берёт первые 10 первых объектов из массива и по user_id ищет индекс объекта, в котором находится этот user_id. Если кратко, то код служит для вывода топ 10 игроков и текущее место юзера. Т.е. данный кусок кода будет вызываться довольно много раз за малое количество времени. У меня в компе стоит intel I3-71... и когда я много раз начинаю спамить открытие страницы, то процессор загружается на ~50% (это на 100 000 объектов), если ставить такой код на вдс, то при большом онлайне вдс может не вывозить, отсюда складывается вопрос: как можно всё это оптимизировать? а именно данную функцию:
$mesto;
for($i3 = 0; $i3<count($table['users']);$i3++){
if($user_id == $table['users'][$i3]['user_id']){
$mesto = $i3+1;
break;
}
}
P.S. Объектами я называю вот это в Json:
{
"value": "994954359439",
"user_id": 2,
"name": "Антон Пискорскйи"
}