Е те сега да видя...
5 отговора
0 прегледа
Е те сега да видя...
Случи се така че и аз запънах на нещо. Не че не мога да го направя по просташкия начин ама не се кефя на идеята да въртя масиви и обекти като изоглавен.
Ситуацията е следната:
Имам масив от обекти, като обектите си имат стойности. Ето и примерен дъмп
Целта е да се вземе стойноста на произволен var2 при данни за var1.
Само моля ви не ми казвайте да въртя като изоглавен по целия масив, това мога и сам да се сетя ;-)
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Ситуацията е следната:
Имам масив от обекти, като обектите си имат стойности. Ето и примерен дъмп
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: Е те сега да видя...
Нещо като
<?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
<?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 на
Re: Е те сега да видя...
Нe знам как си пълниш масива кога го пълниш или го взимаш отнякъде като даденост.
при положение че го пълниш може да си направиш нещо като "map" което в случая ще ти е още един масив и да си индексираш key=>val1.
$key = array_search($val1);
$val2 = $myArray[$key]->getVal2();
иначе без някаква информация за индекса не се сещам как да стане без въртене на масива
П.П. Нямам идея и за колко голям масив става въпрос ... това с пълненето на допълнителен масив може да не се окаже добра идея.
П.П2. Няма ли начин (ако е тръвде голям масива) да го изнесеш в база данни с индекс val1
Break The UnBreakable
при положение че го пълниш може да си направиш нещо като "map" което в случая ще ти е още един масив и да си индексираш key=>val1.
$key = array_search($val1);
$val2 = $myArray[$key]->getVal2();
иначе без някаква информация за индекса не се сещам как да стане без въртене на масива
П.П. Нямам идея и за колко голям масив става въпрос ... това с пълненето на допълнителен масив може да не се окаже добра идея.
П.П2. Няма ли начин (ако е тръвде голям масива) да го изнесеш в база данни с индекс val1
Break The UnBreakable
Малеее
На теб да не би основния език за програмиране да ти е Java ?
само Жавар може да о-клас-и за 1 променлива ;-)))
Все пак мисля че обхождането на елементите на масива ще е по-бързо и ефикасно отколкото викането на колбак функцията ;-)
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
само Жавар може да о-клас-и за 1 променлива ;-)))
Все пак мисля че обхождането на елементите на масива ще е по-бързо и ефикасно отколкото викането на колбак функцията ;-)
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re: Малеее
Тва за скороста може и да е така, може и да не е...само група руски учени го знаят без да провеждат тестове :)
Пък и въпроса ти беше как да стане без обхождане.
god is real...
if not defined as integer
Пък и въпроса ти беше как да стане без обхождане.
god is real...
if not defined as integer
Re: Малеее
А какъв програмист ще о-класи за две променливи?
Аз ти предлагам индекса за търсене да го извадиш в отделен array извън stdClass, точно както каза пирата. Не знам какъв е твоя стил на писане, но аз винаги съм предпочитал където е възможно да разлагам обектите на редици, дори ако станат 10-15. Много по-бързо и леко работи.
Аз ти предлагам индекса за търсене да го извадиш в отделен array извън stdClass, точно както каза пирата. Не знам какъв е твоя стил на писане, но аз винаги съм предпочитал където е възможно да разлагам обектите на редици, дори ако станат 10-15. Много по-бързо и леко работи.