哎呀,不工作;数组问题


OOPHP not working; array issue

现在我得到这个消息:在D:'xampp'htdocs'dackhotell'包括' forms . PHP第39行中为foreach()提供的无效参数,我真的不明白(我是PHP新手)如何解决它。

以下是文件的代码:

    <?php
            if (isset($_REQUEST["updateView"])){
                $id = $_REQUEST["updateView"];
                $obj = $register->getOrder($id);
        ?>
    <p>
    <!-- Formuläret för uppdateringen -->
    Inlämningsid: <input type = "text" name = "deliverId" value = "<?php echo $id;?>" readonly /><br />
    Namn: <input type="text" name="new_name" value="<?php echo $obj->getName()?>" />
    Telefonnummer: <input type="tel" name="new_phone_number" value="<?php echo $obj->getPhone()?>" />
    E-post: <input type="email" name="new_email_user" value="<?php echo $obj->getEmail()?>" />
    Däckfabrikat och dimension: <input type="text" name="new_fabricDim" value="<?php echo $obj->getDim()?>" />
    Status: <input type="text" name="new_status" value="<?php echo $obj->getStatus()?>">
    <br />
    <input type="submit" name="updateOrder" value="Uppdatera info" />
    <input type="button" id="exit" value="Avbryt" onClick="history.back()" />
    </p>
    <!-- ********** -->
        <?php
        }

        foreach($register->gethotelList() as $key => $obj){
            echo "<br /><strong>Namn: </strong>" . $obj->getName() . " <strong>Telefonnummer: </strong>" . $obj->getPhone() . 
            " <strong>E-post: </strong>" . $obj->getEmail() . " <strong>Däckfabrikat och dimension: </strong>" . $obj->getDim() . 
            " <strong>Status: </strong>" . $obj->getStatus() . " <strong>Uppdaterat: </strong>" . $obj->getDatum() . 
            " <a href='index.php?delOrder=$key'>Ta bort</a>, <a href='index.php?updateView=$key'> Uppdatera</a>";
        }
        ?>

和OOP文件或代码如下:

// Skapar klassen Register som används sedan i formen
class Register {
    protected $name = '';
    // Skapar en array där all information kommer att lagras i HotelList
    public $hotelList = array();

    function __construct($namn){
        $this->name = $namn;
        /* Kollar ifall filen existerar och unserializerar det
        sedan till array HotelList som består av objekt */
        if(file_exists("order/order.txt")>0)
            $this->hotelList = unserialize(file_get_contents("order/order.txt"));
    }
    // Skapar en funktion som lägger till nya order till array
    function addOrder($userName, $userPhone, $userEmail, $fabricDim, $userStatus, $dat){
        $this->hotelList[] = new Order($userName, $userPhone, $userEmail, $fabricDim, $userStatus, $dat);
        // Serializerar och lägger till innehållet av array till nämnda filen
        file_put_contents("order/order.txt",serialize($this->hotelList));
    }
    //Skapar en funktion för att kunna ta bort en order
    function removeOrder($ind){
        unset($this->hotelList[$ind]);
        // Serialiserar och lägger till innehållet av array till nämnda filen
        file_put_contents("order/order.txt",serialize($this->hotelList));
    }
    // Skapar en funktion för att kunna uppdatera innehållet eller ordern
    function updateOrder($ind, $userName, $userPhone, $userEmail, $fabricDim, $userStatus, $dat){
        $this->hotelList[$ind] = new Order($userName, $userPhone, $userEmail, $fabricDim, $userStatus, $dat);
        // Serialiserar innehållet och lägger till den uppdaterade informationen till listan
        file_put_contents("order/order.txt",serialize($this->hotelList));
    }
    public function getHotelList(){
        return $this->hotelList;
    }
    public function getOrder($ind){
        return $this->HotelList[$ind];
    }
}
?>

现在,我错过了什么地方声明的数组,或者我应该做什么?

没有检查它太多,我认为你有一个拼写错误的函数名。注册类中的函数名是getHotelList,而不是getHotelList。

试着改变

foreach($register->gethotelList() as $key => $obj){

foreach($register->getHotelList() as $key => $obj){

我猜问题是在构造函数中的这一行:

        $this->hotelList = unserialize(file_get_contents("order/order.txt"));
如果发生错误,

unserialize返回false。我会从这里开始