Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> tablice, problem algorytmiczny
jbiz
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 10.03.2004
Skąd: z duszy :]

Ostrzeżenie: (20%)
X----


dwie tablice zawierajace dowolna ilsoc kolejnych, asosjacyjnych:

$old_arr = Array ();
$new_arr = Array();

$old_arr[0] = Array ("id"=>'123', "nazwa"=>"cokolwiek","itd"=>"itp");
$old_arr[1] = ...
$old_arr[2] = ...

sa to rekordy odczytane z bazy.

...

$new_arr[...] = strukturalnie analogicznie, sa to nowe rekordy oczekujace na wpisanie do bazy

macie moze pomysl jak najefektywniej odseparowac wzgledem pola id trzy zbiory:
1) z pokrywajacymi sie numerami id (by zrobic update)
2) id istniejace w old_arr, ale nie istniejace w new_arr (by zrobic delete)
3) id istniejace w new_arr, ale nie istniejace w old_arr (by zrobic insert)

?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
FiDO
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


  1. <?php
  2.  
  3. $old_arr = ...;
  4. $new_arr = ...;
  5.  
  6. function pobierzId($v, $w)
  7. {
  8.   $v[] = $w['id'];
  9.   return $v;
  10. }
  11. // pobranie wszystkich ID z $old_arr do osobnej tablicy
  12. $ids = array_reduce($old_arr, 'pobierzId', array());
  13.  
  14. function cbUpdate($var)
  15. {
  16.   global $ids;
  17.   return (in_array($var['id'], $ids));
  18. }
  19. // pobranie tych elementow z $new_arr ktore maja ID znajdujace sie w $ids (pobranych z $old_arr)
  20. $update = array_filter($new_arr, 'cbUpdate');
  21.  
  22. ?>

Reszta analogicznie, pisalem bez sprawdzania, wiec moga byc bledy, no ale masz przynajmniej idee.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
jbiz
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 10.03.2004
Skąd: z duszy :]

Ostrzeżenie: (20%)
X----


dzieki, dobre 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 - 06:47