У меня есть API, и мне нужно проверить ввод, затем, если он действителен, я печатаю некоторые объекты ответа JSON. Что у меня есть:
<?php
$headers = [
"User-Agent: Test API",
"token: *my-token*"
];
$accountid = $_POST['accountid'];
$url = "https://my+api+url/$accountid";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
$data = json_decode($result, true);
if (preg_match('/404/',$result)){
echo "AccountID invalid.";
}
else {
echo "AccountID valid:\n";
}
?>
И возврат правильный, я получаю свой ответ API. Мой API возвращает это:
{
"status": "ACTIVE",
"id": "DEFAULT",
"add": [{
"key": "state",
"value": "New York"
}, {
"key": "city",
"value": "New York"
}],
"created": "2023-01-16",
"modified": "2023-01-16",
"_id": "50000000"
}
Я пытаюсь отфильтровать этот ответ JSON, например, если он действителен, я хочу, чтобы он показывал мне только «статус», «модифицированный» и _ «id» из моего JSON. Я очень новичок в PHP, все еще учусь. Кто-нибудь может мне помочь?
Я пытался использовать foreach
внутри своего else
вот так:
$data = json_decode($result, true);
if (preg_match('/404/',$result)){
echo "AccountID invalid.";
}
else {
echo "AccountID valid:\n";
foreach ($data as $values){
echo $values["status"],
echo $values["modified"],
echo $values["_id"];
}
ошибка: Uncaught TypeError: невозможно получить доступ к смещению строки типа в строке.
о, это было проще, чем я себе представлял... спасибо @aynber!!
Вам нужно проверить, есть ли статус ACTIVE
, а затем получить доступ к данным json.
<?php
if ( $result === false){
echo "Error Request";
}else{
$data = json_decode($result);
if ($data->status == "ACTIVE"){
echo $data->_id;
echo $data-> modified
}else{
echo "Invalid Data";
}
}
Вы пытаетесь перебрать
$data
, что означает, что в первом цикле у вас будет ключstatus
и значенияACTIVE
. Поскольку это один объект, и вы знаете, какие свойства вы хотите получить, удалите цикл foreach.