| 
	
 | 
 
           
             
               
               
                 
                   | 
                   Тема
                    | 
                     Е те сега да видя... 
 | 
 
 |  
| Автор | 
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
           
  
             |   |  
           
             | 
               
                |  
           | 
            
           
  На теб да не би основния език за програмиране да ти е Java ? 
 само Жавар може да о-клас-и за 1 променлива ;-)))
 Все пак мисля че обхождането на елементите на масива ще е по-бързо и ефикасно отколкото викането на колбак функцията ;-)
  root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
 root@ro6avia#/bin/seek_and_destroy
           
  
             |   |  
           
             | 
               
                |  
           | 
            
           
  Тва за скороста може и да е така, може и да не е...само група руски учени го знаят без да провеждат тестове :)
 
 Пък и въпроса ти беше как да стане без обхождане.
  god is real...
 if not defined as integer
           
  
             |   |  
           
             | 
               
                |  
           | 
            
           
  А какъв програмист ще о-класи за две променливи? 
 
 Аз ти предлагам индекса за търсене да го извадиш в отделен array извън stdClass, точно както каза пирата. Не знам какъв е твоя стил на писане, но аз винаги съм предпочитал където е възможно да разлагам обектите на редици, дори ако станат 10-15. Много по-бързо и леко работи.
  
           
  
             |   |  
  |   
 
 
 |  
 |   
 |