Php 引发未定义变量通知的奇怪情况

Php 引发未定义变量通知的奇怪情况,php,Php,我的这一行代码很简单: if(isset($_POST['prodotto'])){$prodotto = $_POST['prodotto'];}else{$prodotto=='';} 他正在提出一个php通知 [php7:通知][pid 47861][client 10.211.55.2:63940]PHP通知: 未定义变量:prodotto in/media/psf/Sites/login/login.php on 第44行 但我并不期望出现这种情况,因为据我所知,这行代码应该始终定义

我的这一行代码很简单:

if(isset($_POST['prodotto'])){$prodotto = $_POST['prodotto'];}else{$prodotto=='';}
他正在提出一个php通知

[php7:通知][pid 47861][client 10.211.55.2:63940]PHP通知: 未定义变量:prodotto in/media/psf/Sites/login/login.php on 第44行

但我并不期望出现这种情况,因为据我所知,这行代码应该始终定义它:使用POST值或空值。我知道这只是一个通知,但我也想把它扔掉

我错过了什么

在我的代码后面,我重复使用这个变量,如下所示:

die(json_encode(array('status'=>'success','message' => 'Benvenuto', 'prodotto'=>$prodotto, 'stripe_customer'=>$row['stripe_customer'])));

我再次收到了关于
$prodotto
的相同通知(这是在前面显示的代码行中设置的)

您在else语句中进行了等价处理,而不是初始化

if(isset($_POST['prodotto'])){
    $prodotto = $_POST['prodotto'];
} else {
  $prodotto =''; // not ==
}
或者你也可以

$prodotto = '';

if(isset($_POST['prodotto'])){
  $prodotto = $_POST['prodotto'];
} // avoid else
甚至更好

 $prodotto = $_POST['prodotto'] ?? ''; // null coalescing operator

您正在else语句中进行等值,而不是初始化

if(isset($_POST['prodotto'])){
    $prodotto = $_POST['prodotto'];
} else {
  $prodotto =''; // not ==
}
或者你也可以

$prodotto = '';

if(isset($_POST['prodotto'])){
  $prodotto = $_POST['prodotto'];
} // avoid else
甚至更好

 $prodotto = $_POST['prodotto'] ?? ''; // null coalescing operator

您有
$prodotto='';
而不是
$prodotto='';
。因此,您在
else
案例中分配了一个新变量。您有
$prodotto='';
而不是
$prodotto='';
。因此,您在
else
案例中分配了一个新变量。或者更好,并且避开了任何这样的情况问题,
$prodotto=$\u POST['prodotto']??;
@Jon谢谢。这是一个很好的提示!或者更好,避开任何此类问题,
$prodotto=$\u POST['prodotto']??;
@Jon谢谢。这是一个很好的提示!