Я пытаюсь найти лучший способ найти комбинацию значений в массиве json и, если она существует, вернуть сообщение об ошибке. Если комбинация значений отсутствует в массиве, отправьте их на сервер. Вот что у меня есть.
JSON
[{
"username": "johnsmith@test.com",
"contest": "TV",
"timestamp": "Fri Nov 09 2018 16:33:38 GMT-0500 (Eastern Standard Time)"
}, {
"username": "bob@test2.com",
"contest": "Phone",
"timestamp": "Fri Nov 09 2018 18:33:51 GMT-0500 (Eastern Standard Time)"
}]
Я использую ajax для публикации деталей в php, и эта часть работает хорошо.
$.ajax({
type: 'POST',
url: 'update.php',
data: { theuser: theuser, thecontest: thecontest, timestamp: timestamp },
success: function() {
//Show confirm notification hide btns and close the modal
$('.modalbtns').hide();
$('#successbox').fadeIn();
setTimeout(function() {
$('#ModalCenter').modal('hide')
}, 2400);
},
error: function() {
// do something on error
}
});
Это то, что я пока имею для php (update.php)
<?php
$theuser = $_POST['theuser'];
$thecontest = $_POST['thecontest'];
$timestamp = $_POST['timestamp'];
if (is_writable('alldata.json')) {
$json = file_get_contents('alldata.json');
$data = json_decode($json);
$data[] = array('username'=> $theuser, 'contest' => $thecontest, 'timestamp' => $timestamp);
file_put_contents('alldata.json', json_encode($data));
} else {
//echo "file is not writable, check permissions";
}
?>
Например, я пытаюсь достичь
Перед публикацией проверьте в массиве json, существует ли следующая комбинация.
имя пользователя = bob@test2.com И конкурс = телефон
Если оно существует, верните пользовательское сообщение на страницу, например, (вы уже зарегистрированы).
Если комбинация отсутствует в массиве json, отправьте сообщение в файл.
Я полагаю, что это должно быть что-то вроде
foreach($data as $item)
{
if($item->username == $username) || ($item->contest == $contest){
//combination found, do not post!
}
}
Но я не могу заставить его работать, спасибо за помощь!