Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][array] Łączenie dwóch tablic
bim2
post
Post #1





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Witam, dopracowuje swoją klasę do szukania najkrótszej drogi (teraz szuka po skosach smile.gif ). I mam następujący problem. Załóżmy że ciągle idę w dól więc:
x,y = 0,0
x,y = 0,1
x,y = 0,2
x,y = 1,3 //tutaj nagle idę na ukos

Ale postanawiam dołączyć między (0,2) a (1,3) jedną wartość (0,3). Jak mam ją tam wcisnąć? smile.gif Nie mam już pomysłów worriedsmiley.gif

Może ktoś mądrzejszy będzie wiedział. smile.gif


--------------------
Go to the top of the page
+Quote Post
Darti
post
Post #2





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $all = array(array(0,0),array(0,1),array(0,2),array(1,3));
  3.  
  4.  
  5. function wcisnij($punkt_przed,$nowy_punkt,$tablica = array()){
  6.    
  7.    $pozycja_przed = array_search($punkt_przed,$tablica);
  8.    
  9.    $a = array_slice($tablica,0,$pozycja_przed + 1);
  10.    $b = array_slice($tablica,$pozycja_przed + 1);
  11.    
  12.    $a[] = $nowy_punkt;
  13.    $wynik = array_merge($a,$b);
  14.    
  15.    return $wynik;
  16. }
  17.  
  18. print_r(wcisnij(array(0,2),array(0,3),$all));
  19. ?>


p.s. a jak nie zna się punktow, "pomiedzy" które trzeba ten nowy wcisnac to prosze:

  1. <?php
  2. $all = array(array(-1,-1),array(0,0),array(0,1),array(0,2),array(1,3));
  3.  
  4. function wcisnij($punkt_przed,$nowy_punkt,$tablica = array()){
  5.    
  6.    $pozycja_przed = array_search($punkt_przed,$tablica);
  7.    
  8.    $a = array_slice($tablica,0,$pozycja_przed + 1);
  9.    $b = array_slice($tablica,$pozycja_przed + 1);
  10.    
  11.    $a[] = $nowy_punkt;
  12.    $wynik = array_merge($a,$b);
  13.    
  14.    return $wynik;
  15. }
  16.  
  17. function znajdz_punkt_przed($nowy_punkt,$tablica){
  18.    
  19.    list($nowy_x,$nowy_y) = $nowy_punkt;
  20.    
  21.    foreach ($tablica as $key=>$value){
  22.        list($obecny_x,$obecny_y) = $value;
  23.        list ($nastepny_x,$nastepny_y) = $tablica[$key+1];
  24.        
  25.        //wykrywamy skos
  26.        if(abs($obecny_x - $nastepny_x + $obecny_y - $nastepny_y) == 2){
  27.            // sprawdzam, czy podany punkt ulokuje się na kolanku zastepujac skos
  28.            if((abs($obecny_x-$nowy_x + $obecny_y - $nowy_y) == 1) && (abs($nastepny_x - $nowy_x + $nastepny_y - $nowy_y) == 1)){
  29.                //echo " <-- za tym elementem mozna wstawic kolanko";
  30.                return array($obecny_x,$obecny_y);
  31.            }            
  32.        }        
  33.    }    
  34. }
  35.  
  36. print_r(wcisnij(znajdz_punkt_przed(array(0,3),$all),array(0,3),$all));
  37. print_r(wcisnij(znajdz_punkt_przed(array(-1,0),$all),array(-1,0),$all));
  38. ?>


Ten post edytował Darti 22.11.2008, 19:15:53


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
bim2
post
Post #3





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


baaardzo dziękuję ;*

Podpasowałem sobie pod klasę i ładnie śmiga :] Naprawdę bardzo dziękuję, na szczeście po CSie mi się łepetynka odswiezyła. smile.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 07:01