如果在 php 中循环,为什么我不能访问内部变量

Why can't i access variable inside if loops in php

我正在制作简单的购物车,但我真的被最终价格 a.k.a $fp 变量困住了。 总是有:Notice: Undefined variable: fp in C:\xampp\htdocs... 事情是一切正常,数据库中的数据是在现场获取的,包括价格但是当我想显示 $fp(final price) 时它显示该错误。 我尝试在 if($row['ID'] == $id) 循环后的 else 语句中将其设置为 0,但没有任何反应 我试图让它成为全球性的:

global $fp; 
$fp = $fp + intval($row['price']);

当我这样做时,错误消失了,但它什么也没做(空 space)。也许我只是坐得太久了,但我无法理解为什么我无法访问该变量或正在发生的事情。

<section class="cart">
                <?php
                if(isset($_SESSION['cart'])){
                    $product_id = array_column($_SESSION['cart'],'product_id');
                    $sql = "SELECT * FROM muzi;";
                    $result = mysqli_query($conn, $sql);
                    while($row = mysqli_fetch_assoc($result)){
                        foreach($product_id as $id){
                            if($row['ID'] == $id){          
                echoItem($row['fotografia'],$row['price'],$row['znacka'],$row['konkretne'],$size);
                                $fp = $fp + intval($row['price']);
                            }
                        }
                    }
                }else{
                    echo "<h5>Cart is empty</h5>";
                }
               ?>
   <h2 class="h2-cart-item">PRICE: <?php $fp;?> €</h2>
</section>
function echoItem($productIMG, $productPrice, $znacka, $typ_oblecenia){
    $product = "
    <article class='clearfix'>
        <img src='../img/$productIMG' alt='hihi' style='width: 10%;'>
        <div class='info-text-cart'>
            <p>specific type: $typ_oblecenia</p>
            <p>Brand: $znacka</p>
            <button><i class='fas fa-times'></i></button>
        </div>
        <div class='important-info-cart'>
            <p>Price: $productPrice €</p>
            <p>quantity: 1</p>
        </div>
    </article>
    ";
    echo $product;
}

ps:我在打字方面拥有一切权利。我只是将其中涉及的一些内容翻译成英文,这样更有意义。

$fp 从未如前所述声明过。

如果您将其声明为全局(或非全局),您应该能够在第二个代码块上使用它,您尝试时没有看到任何内容的原因是您忘记了 echo它.

一个有效的例子是:

<section class="cart">
                <?php
                $fp = 0;
                if(isset($_SESSION['cart'])){
                    $product_id = array_column($_SESSION['cart'],'product_id');
                    $sql = "SELECT * FROM muzi;";
                    $result = mysqli_query($conn, $sql);
                    while($row = mysqli_fetch_assoc($result)){
                        foreach($product_id as $id){
                            if($row['ID'] == $id){          
                echoItem($row['fotografia'],$row['price'],$row['znacka'],$row['konkretne'],$size);
                                $fp = $fp + intval($row['price']);
                            }
                        }
                    }
                }else{
                    echo "<h5>Cart is empty</h5>";
                }
               ?>
   <h2 class="h2-cart-item">PRICE: <?php echo $fp;?> €</h2>
</section>