如何从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中删除对象?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 <numpy/arrayobject.h> 在 c++ 中将数据从 np.array 获取到 std::vector?