php) код внутри if (empty ($ param1)) {} все еще выполняется, даже если $ param1 не пуст - PullRequest
1 голос
/ 29 марта 2020

Я работал над этой проблемой в течение нескольких часов, но я не мог понять, почему empty () в, если оператор не работает, как я ожидал.

fetch. php

    header('Content-Type: application/json');

function fetchApi($param1){
    $apiKey="SOME TEXT WHICH I WILL NOT POST HERE";
    $curl = curl_init();
    if(empty($param1)){       
        $body = json_decode(file_get_contents('php://input'), true);
        $bodyObject = (object) $body;
        if($bodyObject->target=="main"){
            $bodyObject->link = $bodyObject->link . "random?number=4".$apiKey;
            curl_setopt($curl, CURLOPT_URL, $bodyObject->link);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec($curl); 
            echo $output;
        }
    }else{
        echo $param1;
    }
    curl_close($curl);
}
fetchApi('');

это мой код fetch. php, мне нужно запустить fetchApi в двух разных ситуациях. Первая ситуация - когда загружен индекс. html. Javascript автоматически выберет для извлечения. php и запустит функцию fetchApi с пустой строкой в ​​качестве параметра. Протестировали сотни раз, и все работает нормально.

Но проблема в том, что мне нужно запустить эту функцию в поиске. php, когда пользователь что-то ищет.

форма в индексе. html

 <form action="search.php" method="GET">
     <label for="check">ingradients</label><input id="check"type="checkbox"/>
     <input type="text" name="search" placeholder="SEARCH"/>
 </form>

search. php

<!DOCTYPE html>
 <html lang="en">
 <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
 </head>
 <body>
  <?php 
    $searchId = $_GET["search"];
    include ('fetch.php');
    fetchApi($searchId);
   ?>
</body>
</html>

, как вы можете видеть, в поиске. php Я включаю fetch. php и вызывает функцию fetchApi с аргументом $ _GET ["search"], но я получаю эту ошибку, когда что-то ищу.

Примечание: неопределенное свойство: stdClass :: $ target в C: \ xampp \ htdocs \ spoonacular \ fetch. php on line 16

Я не могу понять, почему php показывает такую ​​ошибку. Я передал аргумент, он не пустой, почему php все еще запускает алгоритмы внутри if (empty ($ param1)) {}? Я пробовал if ($ param1 == '') {}, но это тоже не работает.

Как это сделать, если я хочу полностью игнорировать все внутри if (empty ($ param1)), если параметр функции не является пустой строкой или NULL?

1 Ответ

1 голос
/ 29 марта 2020

Отвечаю на мой вопрос сам. Это не имеет ничего общего с if (empty (....)) Причиной, по которой я получаю эту ошибку, было то, что

fetchApi('');

всегда вызывался, когда я включаю fetch. php Спасибо пользователю 3783243 за ваше комментарий.

И я решил эту проблему, поэтому

if(empty($_GET)){    
    fetchApi('');
}

fetchApi ('') будет работать только тогда, когда пользователь не сделал запрос GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...