🐴
это будет лучшая подготовка
Anonymous
ты просто негодуешь или нужна помощь? если второе, то объясни, в чем проблема
Вот значит по порядку.
Берем json, при отсутствии индекса просим пользователя ввести ответ.
//скрипт- что то вроде минимальной самообучалки
Итак, ситуация 1) Индекс есть, все работает чудесно.
Ситуация номер 2) Индекса нет, пользователь вводит свой ответ на вопрос, ответ с вопросом летят в json. И тут я уже перестаю что либо понимать
Anonymous
как на скриншоте выше все выходит
Anonymous
т.е. новая пара $key -> $answr заменяет предидушую
Anonymous
а предидушая превращается в .noname файл
Anonymous
http://i.prntscr.com/BAhLZhb1RbyqrzKoeaZslg.png
Petr
Я не совсем понимаю зачем это нужно просто, есть же встроенные функции, зачем изобретать велосипед.
Но спасибо за советы и помощь, попробую пописать сортировки
SarcasmIO
SarcasmIO
посмотреть как ты мыслишь
SarcasmIO
как бы ты решал подобную задачу
🐴
Anonymous
вот ублюдский кодик :)
🐴
Anonymous
<?php
//error_reporting(0);
$firstlast = 0;
$jsonb = file_get_contents('base.json');
do{
$firstlast++;
if($firstlast===1){
echo "Приветствую!Что найти? \n";
} else {
echo "Что нибудь еще? \n";
}
$line = trim(fgets(STDIN));
//end
$data = json_decode($jsonb,true);
if ($data[$line] != false && !is_null($data)){
//json выборка
echo $data["$line"];
//end
}
else{
echo 'Упс..Этого я не знаю, если Вы знаете ответ, напишите его(иначе напишите "нет")';
/*$ansr = trim(fgets(STDIN));
if($ansr != 'нет'){
$json_data = array("d"=>"ssd");
file_put_contents('base.json', json_encode($json_data));
}*/
}
} while($line != 'нет');
Anonymous
Я просто пытаюсь понять, куда копать когда просплюсь)
Anonymous
Пните в какую сторону этот json раскуривать :))
Anonymous
вот тут соответственно ловим CIN с переменной $line и CIN с переменной $ansr
Anonymous
для тестов ставил прямые
Anonymous
$json_data = array("d"=>"ssd");
Anonymous
вот тута
Anonymous
:( Не чего то я переборшил столько не спать.. Буду признателен если что то подскажите, а я пока пойду отключусь :) Заранее спасибо ❤️
Конторка
🐴
Anonymous
на данный момент
Anonymous
{"test":"hyest"}
Anonymous
а так болванка пустая была изначально
Anonymous
как то по другому его организовывать нужно?
Anonymous
не имел до сегодня дела с json просто
Конторка
🐴
твой код, который пишет в файл, закомментирован
Anonymous
да, я под конец так оставил)
Anonymous
когда уже руки опустились гуглить
Anonymous
и сюда решил спросить
Anonymous
интересует причина, по которой json перезаписывает содержимое
Anonymous
чую что то не так делаю
Anonymous
может по другому болванку надо сторить
🐴
вроде по коду все норм
Anonymous
вот я тоже думаю
Anonymous
сам json файл может же быть пустым изначально?
🐴
php > file_put_contents('my.json', json_encode(['foo' => 'bar']));
php > var_dump(json_decode(file_get_contents('my.json'), true));
php shell code:1:
array(1) {
'foo' =>
string(3) "bar"
}
php >
🐴
🐴
php > var_dump(json_decode(''));
php shell code:1:
NULL
php >
Конторка
в json.txt json соответственно
SarcasmIO
Конторка
🐴
Конторка
Конторка
Чую я, проблема там в недосыпе и переутомление, а не в коде 😀
Anonymous
/stat@combot
Combot
combot.org/chat/-1001047863278
Anonymous
/link@yetanotherstatsbot
Yet Another Stats (β)
https://b.yasb.exileed.com/t/phpgeeks
Тенпеннай
ты пришел сюда читать статку и пинать задницы, и теперь у тебя кончилась статка?
Anonymous
А?
Конторка
кончились задницы
Anonymous
Ага
Anonymous
Именно для этого и пришел
Anonymous
Делать же мне нехуй
Anonymous
магия какая то..
Anonymous
может как то обьявлять перенос строки надо при записи в json?
Anonymous
да я уже и на буке проверил на всякий случай
🐴
🐴
я все еще не понимаю, в чем у тебя беда. запости код, который не работает. и скажи, почему ты считаешь, что он не работает
🐴
1. вот код
2. делаю вот так
3. вижу такой результат
4. а должен быть вот эдакий
Anonymous
1)
<?php
//error_reporting(0);
$firstlast = 0;
$jsonb = file_get_contents('base.json');
do{
$firstlast++;
if($firstlast===1){
echo "Приветствую!Что найти? \n";
} else {
echo "Что нибудь еще? \n";
}
$line = trim(fgets(STDIN));
//тут json пляшет
//$json_data = array('abc'=>'ответ');
//file_put_contents($jsonb, json_encode($json_data));
//end
$data = json_decode($jsonb,true);
if ($data[$line] != false && !is_null($data)){
//json выборка
echo $data["$line"];
//end
}
else{
echo 'Упс..Этого я не знаю, если Вы знаете ответ, напишите его(иначе напишите "нет")';
$ansr = trim(fgets(STDIN));
if($ansr != 'нет' && $line != 'нет'){
$json_data = array("$line"=>"$ansr");
file_put_contents('base.json', json_encode($json_data));
}else{
$line = 'нет';
}
}
} while($line != 'нет');
Anonymous
2)если отсутствует ключ json , пишем новый
3)При записи нового ключа, старый подтерается
4)А должен просто добовляться новый
Anonymous
т.е.
вот имеем в json сейчас {"test":"heh"}
Anonymous
при попытке ввести, нас переключит на условие которое запишет дополнительный ключ:ответ
🐴
Anonymous
Урашечки :)) А как этого избежать?
🐴
а тебе надо $data[$line] = $answer;
🐴
и далее file_put_contents('base.json', json_encode($data));
Anonymous
мы же переопределим дату таким образом
Anonymous
она будет равна 2 отловленному CIN
Anonymous
хм..Интересненько, спасибо пошел пробовать