Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 09:18 18.04.24 
Компютри и Интернет
   >> PHP
*Кратък преглед

Тема Е те сега да видя...нови  
Автор ro6aviaМодератор (усер френдли)
Публикувано20.07.07 12:39



Случи се така че и аз запънах на нещо. Не че не мога да го направя по просташкия начин ама не се кефя на идеята да въртя масиви и обекти като изоглавен.

Ситуацията е следната:
Имам масив от обекти, като обектите си имат стойности. Ето и примерен дъмп


array(3) {
[0]=>
object(stdClass)#1 (2) {
["var1"]=>
string(8) "Var1Val1"
["var2"]=>
string(8) "Var2Val1"
}
[1]=>
object(stdClass)#2 (2) {
["var1"]=>
string(8) "Var1Val2"
["var2"]=>
string(8) "Var2Val2"
}
[2]=>
object(stdClass)#3 (2) {
["var1"]=>
string(8) "Var1Val3"
["var2"]=>
string(8) "Var2Val3"
}
}

Целта е да се вземе стойноста на произволен var2 при данни за var1.
Само моля ви не ми казвайте да въртя като изоглавен по целия масив, това мога и сам да се сетя ;-)

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy

Тема Re: Е те сега да видя...нови [re: ro6avia]  
Автор buendia (el doce)
Публикувано20.07.07 13:09



Нещо като

<?php

$o1 = new StdClass;
$o1->var1 = 'Var1Val1';
$o1->var2 = 'Var2Val1';

$o2 = new StdClass;
$o2->var1 = 'Var1Val2';
$o2->var2 = 'Var2Val2';


$o3 = new StdClass;
$o3->var1 = 'Var1Val3';
$o3->var2 = 'Var2Val3';

$a = array($o1, $o2, $o3);

class SearchFor
{
static public $v;
}

function filter($o)
{
return $o->var1 == SearchFor::$v;
}

SearchFor::$v = 'Var1Val2';

print_r(array_filter($a, 'filter'));



може би?


Тва с класа SearchFor e щот не се сетих как иначе да предам параметър на callback функцията



PS. а и връща масив от всички обекти които отговарят на условието.

god is real...
if not defined as integer

Редактирано от buendia на 20.07.07 13:11.



Тема Re: Е те сега да видя...нови [re: ro6avia]  
Автор nupaT (pirat)
Публикувано20.07.07 13:14



Нe знам как си пълниш масива кога го пълниш или го взимаш отнякъде като даденост.

при положение че го пълниш може да си направиш нещо като "map" което в случая ще ти е още един масив и да си индексираш key=>val1.

$key = array_search($val1);
$val2 = $myArray[$key]->getVal2();

иначе без някаква информация за индекса не се сещам как да стане без въртене на масива

П.П. Нямам идея и за колко голям масив става въпрос ... това с пълненето на допълнителен масив може да не се окаже добра идея.

П.П2. Няма ли начин (ако е тръвде голям масива) да го изнесеш в база данни с индекс val1

Break The UnBreakable


Тема Малеее [re: buendia]  
Автор ro6aviaМодератор (усер френдли)
Публикувано20.07.07 13:17



На теб да не би основния език за програмиране да ти е Java ?
само Жавар може да о-клас-и за 1 променлива ;-)))
Все пак мисля че обхождането на елементите на масива ще е по-бързо и ефикасно отколкото викането на колбак функцията ;-)

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy


Тема Re: Малееенови [re: ro6avia]  
Автор buendia (el doce)
Публикувано20.07.07 13:31



Тва за скороста може и да е така, може и да не е...само група руски учени го знаят без да провеждат тестове :)

Пък и въпроса ти беше как да стане без обхождане.

god is real...
if not defined as integer


Тема Re: Малееенови [re: ro6avia]  
Автор croesus (?!?)
Публикувано20.07.07 15:51



А какъв програмист ще о-класи за две променливи?



Аз ти предлагам индекса за търсене да го извадиш в отделен array извън stdClass, точно както каза пирата. Не знам какъв е твоя стил на писане, но аз винаги съм предпочитал където е възможно да разлагам обектите на редици, дори ако станат 10-15. Много по-бързо и леко работи.




*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.