【问题标题】:OOPHP not working; array issueOOPHP 不工作;数组问题
【发布时间】:2016-08-21 14:06:45
【问题描述】:

现在我收到这条消息:在第 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];
    }
}

?>

现在我是否错过了将某些东西声明为数组的地方,或者我应该怎么做?

【问题讨论】:

  • form.php 的第 39 行是哪一行?
  • 我在任何地方都看不到&lt;form&gt;&lt;/form&gt; 标签。另外,无法知道您如何使用/调用Register 类。 Order 类在哪里?这里有太多未知数。
  • 接受下面给出的答案。你似乎并不着急。
  • 首先,请不要包含与您的问题无关的方法和一堆代码,很难理解。其次,请转储您的getHotelList() 输出。

标签: php arrays oop


【解决方案1】:

没有过多检查,我认为您的函数名称有错字。注册类中的函数名是getHotelList而不是gethotelList。

所以尝试改变

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

foreach($register->getHotelList() as $key => $obj){
【解决方案2】:

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

        $this->hotelList = unserialize(file_get_contents("order/order.txt"));

如果发生错误,反序列化返回 false。我会从那里开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多