如何从php中的arrayObject中删除对象?

Posted

技术标签:

【中文标题】如何从php中的arrayObject中删除对象?【英文标题】:How to delete object from arrayObject in php? 【发布时间】:2017-08-23 16:24:42 【问题描述】:

我想从 php 中的 arrayObject 中删除对象,但在 deleteComputer 方法中显示此错误:“警告:非法偏移类型”,请帮助我,我从 php 开始:)

我已经:

       class ControllerList 

            private $computers;

            function __construct() 
                $this->computers= new ArrayObject();

            

         public function addComputer($computer) 
             $this->computers->append($computer);
         

         public function deleteComputer($computerNumber) 
             foreach ($this->computers as $value) 
                 if($value->getNumber() == computerNumber)
                    unset($this->computers[$value]);
                    echo 'Delete!!';
                  else 
                    echo 'Don't delete!!';
                 
               
         

        

主文件:/

         $list = new ControllerList();

         $computer1 = new Computer();
         $computer1->setNumber(001);
         $computer1->setColor("Black");

         $computer2 = new Computer();
         $computer2->setNumber(002);
         $computer2->setColor("White");

         $list->addComputer($computer1);
         $list->addComputer($computer2);

         $list->deleteComputer(001);  --> error method

【问题讨论】:

computerNumber 应该是$computerNumber 【参考方案1】:

$value 是一个对象,而不是数组索引。您需要将数组索引添加到foreach 循环中:

foreach ($this->computers as $i => $value) 
    if($value->getNumber() == $computerNumber)
        unset($this->computers[$i]);
        echo 'Delete!!';
     else 
        echo 'Don't delete!!';
    

【讨论】:

【参考方案2】:

与 Barmar 的解决方案一样,我将在此处解决您的转义问题。

 echo 'Don't delete!!';

echo "Don't delete!!";

echo 'Don\'t delete!!';

更多关于转义字符串的信息可以在这里找到: Escaping quotation marks in PHP

【讨论】:

以上是关于如何从php中的arrayObject中删除对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 php 中的 JSON 对象数组中删除值?

JavaScript的学习4

交换数组两个数位置方法

js中的方法

如何使用 <numpy/arrayobject.h> 在 c++ 中将数据从 np.array 获取到 std::vector?

slice() 方法