Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Filtrowanie i usówanie elementów tablicy
Forum PHP.pl > Forum > Przedszkole
lulia
Cześć. Próbuję poradzić sobie z przeszukaniem tablicy i usunięciu niechcianych elementów. Mam taka tablic:
  1. array:3 [
  2. 0 => array:2 [
  3. "internal_nr_id" => "200007"
  4. "status" => "S"
  5. ]
  6. 1 => array:2 [
  7. "internal_nr_id" => "200007"
  8. "status" => "E"
  9. ]
  10. 2 => array:2 [
  11. "internal_nr_id" => "200008"
  12. "status" => "S"
  13. ]
  14. ]

I chciałem zapisać do nowej tablicy wyłącznie internal_nr_id które mają tylko status S (w tym przypadku 200008).
Próbowałem to zrobić w taki sposób:
  1. for ($i = 0; $i < count($results2); $i++) {
  2.  
  3. if($results2[$i]['internal_nr_id'] === $results2[$i]['internal_nr_id'] && $results2[$i]['status'] === 'S')
  4. {
  5.  
  6.  
  7. $testowaS[$i]=$results2[$i]['internal_nr_id'];
  8. }
  9. }
  10.  
  11. for ($i = 0; $i < count($results2); $i++) {
  12.  
  13. if($results2[$i]['internal_nr_id'] === $results2[$i]['internal_nr_id'] && $results2[$i]['status'] === 'E')
  14. {
  15.  
  16.  
  17. $testowaE[$i]=$results2[$i]['internal_nr_id'];
  18. }
  19. }
  20. $inters = array_intersect($testowaE, $testowaS);

I od tego miejsca mam problem.Bo mając już internal nr który nie spełnia tych wymagań nie wiem jak wywalić go z tablicy.Próbowałem zrobić to za pomocą array_diff,ale wciąż sypie błedami (Notice: Array to string conversion).

Domyśłam się, że ten kod jest słaby,ale to jedyne co przyszło mi do głowy. Albo da się to zrobic inaczej?!?
Pyton_000
  1. <?php
  2.  
  3. $table = [
  4. [
  5. "internal_nr_id" => "200007",
  6. "status" => "S",
  7. ],
  8. [
  9. "internal_nr_id" => "200007",
  10. "status" => "E",
  11. ],
  12. [
  13. "internal_nr_id" => "200008",
  14. "status" => "S",
  15. ],
  16. ];
  17.  
  18. $data = [];
  19. foreach($table as $val) {
  20. $data[$val['internal_nr_id']][] = $val['status'];
  21. }
  22.  
  23. $data = array_filter($data, function($elem) {
  24. return count($elem) == 1 && $elem[0] = 'S';
  25. });
  26.  
nospor
I tak troche od tematu, ale oczy aż bolą

usuwanie
lulia
Wielkie dzięki smile.gif
facepalmxd.gif , ortografia oneeyedsmiley02.png
woxala123
nie ortografia tylko ortogravia
Tomplus
@lulia
Ale jak błąd zauważyłeś, to popraw go. Nie rób wstydu sobie bardziej tongue.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.