Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tablice
Forum PHP.pl > Forum > Przedszkole
jbiz
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)

?
FiDO
  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.
jbiz
dzieki, dobre smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.