OOPHP无法正常工作;数组问题

时间:2016-08-21 14:06:45

标签: php arrays oop

现在我收到这样的消息:在第39行的D:\ xampp \ htdocs \ dackhotell \ includes \ form.php中为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];
    }
}

?>

现在我错过了某个地方宣布某些事情,或者我应该做什么?

2 个答案:

答案 0 :(得分:1)

没有检查太多,我认为你有一个功能名称的拼写错误。寄存器类中的函数名是getHotelList而不是gethotelList。

所以尝试改变

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

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

答案 1 :(得分:0)

我猜测问题出现在构造函数中的这一行:

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

unserialize将返回false。我会从那里开始。