Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в пхп сделать поле класса типа другого класса, Такое можно ваще делать? 
:(
    Опции темы
Vidocq
Дата 15.9.2005, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: 1
Всего: 7



Есть класс
Код

class Points
{
var $pointid;
var $pointname;
}

как мне сделать ещё один класс (), чтобы у него поле было другим классом (с типом Points ) , да ещё и массивом?
типа того
Код

class SetOfPoints
{
var $AllPoints = new Points[];
}




--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
-=Ustas=-
Дата 15.9.2005, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Нарядли так получится. А что ты собсна хочешь сделать?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Vidocq
Дата 15.9.2005, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: 1
Всего: 7



-=Ustas=-
Надо выбрать несколько массивов из БД и находить в этих массивах общие элементы


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
-=Ustas=-
Дата 15.9.2005, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Т.е. класс Points производит выборку данных и держит их в своих свойствах? А класс SetOfPoints должен получить эти данные и сформировать массив?!


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Vidocq
Дата 15.9.2005, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: 1
Всего: 7



-=Ustas=-
В общем, да


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
AntonioBanderaz
Дата 15.9.2005, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Код

class Points    
{    
var $pointid;    
var $pointname;    
}

$point = new Points;

class SetOfPoints    
{    
var $AllPoints = array();    
  function AddPoint($pointLink) {
     $this->AllPoints[] = $pointLink;
  }
}

$points = new SetOfPoints();
$points->AddPoint($point);


только это на ум приходит, Ты по-подробней объясни, а то не понятно зачем тебе это нуна, может ясней станет...

Это сообщение отредактировал(а) AntonioBanderaz - 15.9.2005, 15:46


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Mal Hack
Дата 15.9.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(Vidocq @ 15.9.2005, 16:08)
как мне сделать ещё один класс (), чтобы у него поле было другим классом (с типом Points ) , да ещё и массивом?

Мож все-таки объекты? Класс - описание объекта.

$class2 -> property = & new ClassHZ();
PM ICQ   Вверх
-=Ustas=-
Дата 15.9.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Ну а если формировать массив еще в первом классе, а затем второй наследовать от первого и потом уже делать поиск элементов?!


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Vidocq
Дата 15.9.2005, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: 1
Всего: 7



AntonioBanderaz
Класс!
ТОлько не пойму зачем строчка
Код

$point = new Points;

?
Добавлено @ 15:56
AntonioBanderaz
Цитата(AntonioBanderaz @ 15.9.2005, 15:44)
Ты по-подробней объясни, а то не понятно зачем тебе это нуна, может ясней станет...


Надо выбрать несколько массивов из БД и находить в этих массивах общие элементы (с) smile)

Цитата(Mal @ 15.9.2005, 15:45)
Мож все-таки объекты? Класс - описание объекта.

Да-да. Именно объектов

Цитата
Ну а если формировать массив еще в первом классе, а затем второй наследовать от первого и потом уже делать поиск элементов?!

Я не понял, зачем это. smile)


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Vidocq
Дата 15.9.2005, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: 1
Всего: 7



...И прошу прощенья за оффтоп: где можно почитать подробно об объектах, массивах объектов, инициализции, доступе к элементам, установлении размера, добавлении элементов в пхп...


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Opik
Дата 15.9.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 1
Всего: 55



Код

class Points
{
var $pointid;
var $pointname;
}

class SetOfPoints
{
        var $AllPoints;
        function __construct()
        {
               $this->AllPoints =  new Points;
        }

$idx = new SetOfPoints;

Цитата
$class2 -> property = & new ClassHZ();

Если PHP5, то передавать по ссылке не надо. Объекты передаются по ссылке по умолчанию.
PM MAIL Skype   Вверх
Mal Hack
Дата 15.9.2005, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(Vidocq @ 15.9.2005, 17:18)
...И прошу прощенья за оффтоп: где можно почитать подробно об объектах, массивах объектов, инициализции, доступе к элементам, установлении размера, добавлении элементов в пхп...

http://forum.vingrad.ru/index.php?act=modu...aq&article=2848
+ пара стетей на пхпклабе, яндекс и php.net в разделе документация.
PM ICQ   Вверх
Vidocq
Дата 16.9.2005, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: 1
Всего: 7



Opik
По коду: а где же массив? Мне кажется, вариант AntonioBanderaz'а более правилен. ИМХО

2 Mal Hack
Спасибо


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Opik
Дата 16.9.2005, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 1
Всего: 55



Vidocq
В чем проблема?
Код

$this->AllPoints =  new Points;

меняем на:
Код

$this->AllPoints[] =  new Points;

PM MAIL Skype   Вверх
AntonioBanderaz
Дата 17.9.2005, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Общие элементы можно находить функцией, не обязательно для этого классы создавать smile
Чем тебя не устраивает стандартная ф-ия array_intersect($array1,$array2 [$arrayN]);
Вот пример:
Код

/**
  Функция нахождения одинаковых элементов в массивах
  Возвращает массив одинаковых элементов с сохраненными индексами
*/
function IntersectArray($array1,$array2) {
      return array_intersect($array1,$array2);
}



--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Vidocq
Дата 19.9.2005, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: 1
Всего: 7



AntonioBanderaz
Я сначала думал её заюзать. Но она не подходит. smile Дело в том, что она возвращает массив элементов, которые есть во всех (!!!) массивах-аргументах. А аргументов очень часто будет больше чем 2. Понимаешь, о чём я?


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
AntonioBanderaz
Дата 19.9.2005, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Vidocq
Да понимаю... Тебе надо если хотябы одно повторение с любым из массивов...
Ну тогда можно сделать так:
Код

/*
*$array = array($array1, $array2 [,$arrayN]);
*@return array(); 
*/

function IntersectInArrays($array) {
 $all = array();
  foreach($array as $subArrays) {
     foreach($subArrays as $arrVal) {
        $all[] = $arrVal; // создадим общий массив для всех 
     }
  }
 $uniq = array_unique($all); //Массив тех которые встречаются только один раз
 return array_diff($all,$uniq); //Возвращаем массив повторяшек
}



--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Vidocq
Дата 20.9.2005, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: 1
Всего: 7



AntonioBanderaz
Спасибо, я уже решил эту проблему немного по другому. smile
Щас вернусь и запостю пример...


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Vidocq
Дата 20.9.2005, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: 1
Всего: 7



Напомню. Задача была такая:
1)Имеем массив ид-шников + один самостоятельный ид-шник. По ним нужно выгребать из БД массивы (их будет столько же сколько ид-шников в исходном массиве) других значений в цикле
2) Как-то сохранять эти массивы
3) в полученных массивах искать совпадающие элементы

Код

class Illness
{
 var $IllnessID;
 var $IllnessName;
}

class Point
{
 var $PointID;
 var $PointName;
 var $illnessesThatCure = array();//an array with illnesses cured by THAT point (array is of Illness type)
}

class SetOfPoints
{
 var $points = array();//an array ot Point type

 function AddPoints($illnessid, $authorid)
 {

  for ($i=0; $i<count($illnessid); $i++)
      {
        $sqlText ="SELECT p.pointid, p.pointname FROM points p, influence inf, method m WHERE ";
        $sqlText.= "p.pointid=inf.pointid AND inf.methodid=m.methodid and m.illnessid=". $illnessid[$i];
        $sqlText.= " AND m.authorid =". $authorid;
        /*print "<br>";
        print $sqlText;
        print "<br>";*/
        //executing query
        $result = mysql_query($sqlText);
        //saving points to array
        while ($single_record = mysql_fetch_array($result))
        {
                //classes for point and illness
                $oneIllness = new Illness();
                $onePoint = new Point();

                //saving current illness
                $oneIllness->IllnessID = $illnessid[$i];
                //$oneIllness->IllnessName = $single_record['illnessname'];

                //saving current point
                $onePoint->PointID = $single_record['pointid'];
                $onePoint->PointName = $single_record['pointname'];
                $onePoint->illnessesThatCure[] = $oneIllness;
                //if there is no such point in array -> add such point to array
                if (array_search($onePoint->PointID, $this->points)== FALSE)
                    {
                     $this->points[] = $onePoint;
                    }
                //if such point does exist -> adding illness only to array of illnesses of that point
                else
                    {
                     $this->points[]->Point->illnessesThatCure[] = $onePoint->illnessesThatCure;
                    }
      }
 }
 return $this->points;
}



--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Extensions | Следующая тема »


 




[ Время генерации скрипта: 0.0967 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.