makc0993
Всем привет,
есть папка с файлами json, в каждом файле одинаковые ключи, но разные значения.
Как найти 1 файл в котором есть значение указанное в $_POST и вывести его имя?И как сделать более оптимизировано, файлов может быть несколько тысяч
Drunkenmunky
По очереди считывать, преобразовывать, искать
Загрузить в базу данных. Если версия MySQL 5.7 и выше, то можно каждый JSON в отдельную ячейку.
Если ниже, то придется разобрать по ключам и значениям, и ID json.
makc0993
PHP:
<?php $nickname = $_POST[«nickname»]; $check = 0; foreach ($arr as $value) { $check = 1; echo $value; break; } } if ($check == 0) { echo ‘0’; } ?>примерно так? ошибку выдает на строчке чтения file_get_contents. Путь правильный, я сократил
Drunkenmunky
Кто ж его знает что у вас там массиве.
После строки 4 вставьте print_r($arr);
И посмотрите что вам scandir() выдает.
makc0993
через echo проверял, пришла в ответ строка из имен всех файлов в папке servers
Drunkenmunky
Давайте примеры json, и что искать.
makc0993
я же код выложил и все описал.
найти значение $nickname во всех файлах из папки servers, если нашел останавливаем поиск и высылаем ответ.
Какие примеры?
Drunkenmunky
В первую очередь структуры массива в виде json.
in_array() ищет значение в одномерном массиве.
makc0993
понял, после работы посмотрю, но это не имеет значения так как ошибка в другой строке, до in_array еще добраться нужно
roboformation
Как ты в echo впихнул массив?
PHP:
$nickname = $_POST[«nickname»]; $check = 0; foreach ($arr as $value) { $check = 1; echo $value; break; } } if ($check == 0) { echo ‘0’; }Сделай так и посмотри на массив. 2 последних элемента там случайно не точки?
makc0993
хз, как я вчера вывел массив сонный был, но сегодня уже не получается
print нет у меня только echo, долго разбираться ссылку искать и т.п. запрос через приложение
— Добавлено —
вот что внутри json
[{«Language»:»RU»,»DefaultServer»:true,»Server»:»S1″,»NickName»:»ооооо=оо6оо»,»Lvl»:»1″}]
roboformation
Текст ошибки можешь привести?
Drunkenmunky
И что искать?
makc0993
вспомнил, я в foreach добавил
echo $value; и он мне все имена вывел и в конце ошибку выдаетздесь куча имен файлов json потом это
Notice: file_get_contents(): read of 8192 bytes failed with errno=21 Is a directory in /home/findloginplayer.php on line 7<br />
..<br />
Notice: file_get_contents(): read of 8192 bytes failed with errno=21 Is a directory in /home/findloginplayer.php on line 7<br />походу в конце массива что-то лишнее может как раз таки точки
— Добавлено —в post я ввожу значение никнейма
в ответ имя файла json c этим ником
Drunkenmunky
PHP:
roboformation
PHP:
$nickname = $_POST[«nickname»]; $check = 0; foreach ($arr as $value) { $check = 1; echo $value; break; } } if ($check == 0) { echo ‘0’; }Ошибка ушла?
makc0993
ошибка ушла, но поиск не работает, возвращает 0
по соседству есть скрипт с аналогичным поиском, работает прекрасно, а здесь почему то нет
roboformation
Попробуйте «if (in_array($nickname, $array))» заменить на «if (in_array($nickname, $array [0]))
makc0993
всегда возвращает имя первого файла
Drunkenmunky
Нужно вывести все имена файлов с встречающимся никнеймом или с первым найденным?