Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135

Массив объектов

19.03.2014, 15:45. Показов 4031. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, мне нужно создать массив с названиями объектов. И удалять из него объекты при определенном условии. То есть есть класс apple, на основе которого создаются объекты, например $apple1, $apple2 и так далее. Каждый из объектов должен попасть в массив. И при выполнении условия, например $color = green, объект должен удаляться из массива.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.03.2014, 15:45
Ответы с готовыми решениями:

Массив объектов
Метод: static function getAllContact($order){ $result = mysql_query("SELECT...

Jasmine. Имеется массив из N объектов , необходимо проверить, что какие-то M объектов входят в этот массив
Имеется массив из N объектов , необходимо проверить, что какие-то M объектов входят в этот массив. toContain работает корректно только,...

Передача объектов дочерних классов через массив объектов родительского класса в функцию
Здравствуйте. Возможно, вопрос больше относится к теории ООП, но все же я не решился задавать его в теме теории ООП, так как он кажется мне...

37
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
20.03.2014, 14:16  [ТС]
Студворк — интернет-сервис помощи студентам
Подскажите, как можно удалить элемент массива, подходящий по условию? То есть массив содержит объекты с параметрами(грубо говоря те же массивы). Если параметр соответствует условию, то нужно удалить этот объект из массива. Получается:
PHP
1
2
3
4
5
6
$apples = array (); // массив с объектами apple1, apple2, apple3 ...
if ($this->status == 'Съедено') {
//нужно написать удаление именно того объекта параметр status которого равен "Съедено"
}
//объект например имеет такие параметры.
$apple1 = new apple ($color, $age, dstatus);
0
 Аватар для V@D!k
249 / 249 / 98
Регистрация: 26.07.2010
Сообщений: 1,685
20.03.2014, 14:26
что то типа этого
PHP
1
2
3
foreach ($apples as $key=> $value){
if($value->getstatus()="lalala") unset($apples[$key]);
}
1
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
20.03.2014, 17:20  [ТС]
Спасибо )))

Добавлено через 2 часа 18 минут
С добавлением объектов в массив не разобрался. Есть класс регистр, в нем в массив $apples должны добавляться объекты класса apple. А по какому событию они добавляются? Ведь мы в функцию ничего не передаем. Получается, что чтобы объект добавился в массив, нам нужно вызвать функцию и передать туда параметр. А можно ли, сделать чтобы при создании объекта он автоматически попадал в масив $apples?
PHP
1
2
3
4
5
6
7
8
9
10
11
class register extends apple {
    private static $apples = array();
    public static function add(apple $apple) {
        self::$apples[] = $apple;
    }
    function removeApples() {
        foreach ($apples as $key=> $value){
            if($value->_status()=="Съедено") unset($apples[$key]);
        }
    }
}
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.03.2014, 17:23
Цитата Сообщение от Maksimus1991 Посмотреть сообщение
PHP
1
foreach ($apples
PHP
1
foreach (self::$apples
0
 Аватар для V@D!k
249 / 249 / 98
Регистрация: 26.07.2010
Сообщений: 1,685
20.03.2014, 17:25
Цитата Сообщение от Maksimus1991 Посмотреть сообщение
А можно ли, сделать чтобы при создании объекта он автоматически попадал в масив $apples?
я тут вижу только одно решение, в конструкторе apple вызывать функцию добавления в массив
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.03.2014, 17:30
http://ru.wikipedia.org/wiki/%... %ED%E8%FF) ?
2
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
20.03.2014, 17:56  [ТС]
А вызывать функцию из другого класса, который рсширяет каласс apple можно обычным способом $this->add(); ?
Выдается ошибка что метод не найден. Функция public static add(apple $apple) {};
0
 Аватар для V@D!k
249 / 249 / 98
Регистрация: 26.07.2010
Сообщений: 1,685
20.03.2014, 17:58
функция статическая, ее можно вызвать
PHP
1
класс::add
0
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
20.03.2014, 18:43  [ТС]
А на счет передачи в функцию параметров? Ведь в функцию aad($apple), передается параметр $apple. По идее это и есть объекты. Но, как сделать чтобы при создании объекта он сразу попадал в эту функцию? На счет вызово, да я так и сделал, в конструктор класса apple добавил вызов функции add($apple) и removeApples(). Но нужно, как-то передавать функции добавления создаваемые объекты.

Добавлено через 22 секунды
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class register extends apple {
    public static $apples = array();
    public static function add($apple) {
        self::$apples[] = $apple;
    }
    public static function removeApples() {
        foreach (self::$apples as $key=> $value){
            if($value->_status == "Съедено") { 
                unset($apples[$key]);
                echo 'werew';
            }
            else {echo 'fff';}
        }
    }
}
Добавлено через 29 минут
По идее нужно, как-то в функцию передавать созданные объекты. Простым способом понятно, что взял и отправил, что захотел, но суть здесь в том, как передавать в функцию объекты сразу после их создания. То есть создался объект и сразу в массив добавляется.
0
 Аватар для V@D!k
249 / 249 / 98
Регистрация: 26.07.2010
Сообщений: 1,685
20.03.2014, 18:48
не знаю поможет ли... попробуйте в конструкторе вызывать эту функцию с параметром $this
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.03.2014, 19:14
Навскидку, можно как-то так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
abstract class AddObject
{
    public function __construct()
    {
        $this->add();
    }
    protected function add()
    {
        Apples::add($this);
    }
}
class Apples
{
    private static $_apples = array();
 
    public static function add($obj)
    {
        self::$_apples[] = $obj;
    }
    public static function getApples()
    {
        return self::$_apples;
    }
}
class Apple extends AddObject
{
}
class OtherApple extends AddObject
{
}
 
$apple = new Apple();
$apple2 = new Apple();
$apple3 = new OtherApple();
var_dump(Apples::getApples());
Точно не знаю насчет возможности полностью автоматизировать добавление засчет "встроенных" средств пыха, но сомневаюсь, что такое в пыхе где-то уже есть.
1
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
23.03.2014, 00:32  [ТС]
Два конструктора из разных классов не могут работать?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
23.03.2014, 00:34
В смысле, свой конструктор в дочернем классе + родительский? Если да, то могут. Если нет, то полиморфизм, как таковой, в объектной модели пыха, по сути, отсутствует..

Добавлено через 1 минуту
PHP
1
2
3
4
5
public function __construct(....)
{
    ..........
    parent::__construct(....);
}
0
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
23.03.2014, 14:13  [ТС]
Нет, я в том смысле, что один конструктор находится в абстрактном классе, а другой в классе его расширяющем то есть в классе Apple, и при этом конструктор абстрактного класса перестает работать.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
23.03.2014, 14:19
Лучший ответ Сообщение было отмечено Maksimus1991 как решение

Решение

А я про что говорю, по вашему?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
abstract class AddObject
{
    public function __construct()
    {
        echo 'Abstract class ', __CLASS__, PHP_EOL;
        $this->add();
    }
    protected function add()
    {
        Apples::add($this);
    }
}
class Apples
{
    private static $_apples = array();
 
    public static function add($obj)
    {
        self::$_apples[] = $obj;
    }
    public static function getApples()
    {
        return self::$_apples;
    }
}
class Apple extends AddObject
{
    public function __construct()
    {
        parent::__construct();
        echo 'Class ', __CLASS__, PHP_EOL;
    }
}
class OtherApple extends AddObject
{
    public function __construct()
    {
        parent::__construct();
        echo 'Class ', __CLASS__, PHP_EOL;
    }
}
 
$apple = new Apple();
$apple2 = new Apple();
$apple3 = new OtherApple();
var_dump(Apples::getApples());
0
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
23.03.2014, 14:37  [ТС]
А, понял. Но у него могут быть свои параметры? Просто у меня как, только я добавляю конструктор в класс Apple , перестают добавляться объекты в массив _apples. Это в том случаи если создать свой конструктор без parent::, а если добавить родительский, то выдает ошибку синтаксиса '(' и пишет что невозможно передать несколько параметров. Запись выглядит так public funcrion parent::__construct($color) {}. Или тут нужно обязательно использовать вложение конструктора?
PHP
1
2
3
4
5
public function __construct()
    {
        parent::__construct();
        echo 'Class ', __CLASS__, PHP_EOL;
    }
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
23.03.2014, 21:42
Вы переопределяете конструктор в дочернем классе. Как я уже говорил, полиморфизм в php реализован лишь частично, в одном классе два метода с одинаковыми именами определять нельзя. Вызов метода родительского класса осуществляется с помощью parent. "Свои" параметры могут быть.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class A
{
    public function __construct($foo)
    {
        echo $foo;
    }
}
class B extends A
{
    public function __construct($foo, $bar)
    {
        parent::__construct($foo);
        echo PHP_EOL, $bar, PHP_EOL;
    }
}
 
$b = new B('foo bar lol', 'lorem ipsum dolor');
http://ideone.com/pz4aqI
1
12 / 6 / 1
Регистрация: 17.01.2014
Сообщений: 135
23.03.2014, 22:54  [ТС]
Спасибо, за помощь. Я разобрался. И теперь больше стал понимать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2014, 22:54

Массив объектов базового класса, позволяющий работать с набором объектов — чтение, вывод
Расширить программы с классами. Каждый разработанный класс считать базовым; для каждого такого класса описать производный класс - массив...

Масив объектов. Реализовать функцию, которая вернет новый массив объектов с полями id, name и avaragePrice.
Задан маcсив объектов, например: Нужно реализовать функцию, которая вернет новый маcсив, элементы которого должны быть объектами и...

В общем как заменить в подборе объектов и так чтобы не сохранял в массив объектов а в лист? с#
Вот код.public static RaycastHit rch; int _my_podbor_switch; public GameObject All_max_go_Bullet = new GameObject; public...

При инициализации массива объектов в одном методе, этот массив объектов не видно в других методах
static public void Load() { BaseObject objs = new BaseObject; //Этот массив! for (int i = 0; i <...

Где и как создать массив объектов, чтобы можно было получить доступ к методам этих объектов?
Задача: "в win form кликаю на кнопку (button) и в этот момент в одном из массивов экземпляров класса должен вызваться метод" ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru