Как удалить объект из массива? PHP
у меня есть array
, где я сохраняю объекты типа Materia
, где Alumno
, и я хочу создать функцию, чтобы отписаться от предмета, то есть удалить объект из массива, я попробовал с функцией unset()
и дал мне ошибку и исследование немного lei, что приравнивание переменной к null
в php7
будет делать тот же эффект и удалить объект из массива, но я не в состоянии сделать удаление объекта. фрагмент кода, который я показываю, является простым куском, так как наиболее разработано.
<?php
class Materia{
$nombre;
public function __construct($nombre){
$this->nombre=$nombre;
}
}
?>
<?php
class Alumno{
$nombre;
$misMaterias=array();
public fucntion __construct($nombre){
$this->nomre=$nombre;
}
public function getMaterias(){
return $this->misMaterias;
}
public function darBajaManual(Materia $pMateria){
foreach ($this->getMaterias() as $unaMateria) {
if($unaMateria==$pMateria){
$unaMateria=NULL;
return 'te has dado de baja de '.$pMateria;
}
}
}
}
?>
<?php
$mates=new Materia('matematicas');
$nuevoAlumno= new Alumno('Chris');
$nuevoAlumno->darBajaManual($mates);
var_dump($nuevoAlumno);
?>
1
1 answers
Тема находится в foreach:
foreach ($this->getMaterias() as $unaMateria) {
if($unaMateria==$pMateria){
$unaMateria=NULL;
return 'te has dado de baja de '.$pMateria;
}
}
Объект $unaMateria
является копией каждого из элементов getMaterias()
. Когда вы делаете $unaMateria=NULL
, вы действительно не удалили предмет из массива предметов ученика.
Чтобы сделать это, вы можете изменить for
, добавив индекс (key)
массива:
foreach ($this->misMaterias as $key => $unaMateria) {
if($unaMateria==$pMateria){
unset($this->misMaterias[$key]);
return 'te has dado de baja de '.$pMateria;
}
}
4
Author: Jakala, 2019-04-23 17:44:31