php)即使$param1不是空的,if(empty($param1)){}中的代码仍然运行
我已经研究这个问题好几个小时了,但我不明白为什么if语句中的empty()不能像我预期的那样工作 fetch.phpphp)即使$param1不是空的,if(empty($param1)){}中的代码仍然运行,php,function,if-statement,Php,Function,If Statement,我已经研究这个问题好几个小时了,但我不明白为什么if语句中的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)){
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。
第一种情况是加载index.html时。Javascript将自动fetch到fetch.php,并以空字符串作为参数运行函数fetchApi。经过数百次测试,效果良好
但问题是,当用户搜索某些内容时,我也需要在search.php中运行此函数
index.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>
文件
正如您所看到的,在search.php中,我包括fetch.php并使用参数$_GET[“search”]调用函数fetchApi,但我在搜索某个内容时出现此错误
注意:第16行的C:\xampp\htdocs\spoonacular\fetch.php中未定义的属性:stdClass::$target
我不明白为什么php会显示这样的错误。我传递了一个参数,它不是空的,为什么php仍然在if(empty($param1)){}中运行算法?我也尝试过if($param1=='''{}),但它也不起作用
如果我想完全忽略if(empty($param1))中的所有内容,如果函数参数不是空字符串或NULL,该怎么办 亲自回答我的问题。 它与if(空(..)无关 我犯那个错误的原因是
fetchApi('');
在我包含fetch.php时总是调用
感谢用户3783243的评论
我就这样解决了这个问题
if(empty($_GET)){
fetchApi('');
}
fetchApi(“”)仅在用户未发出GET请求时运行 您有
fetchApi(“”)代码>在您的文件中,所以它总是额外调用自身。@user3783243如果我不想在另一个php文件的first if语句中运行算法,我该怎么办?当我包含文件时,如果fetchApi(“”)也运行,我不知道该怎么办。@user3783243谢谢您的宝贵意见。。。。你的第一句话帮助我解决了问题。非常感谢。我将fetchApi(“”)放在if(empty($\u GET))中,它工作得很好!!