Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Filtrowanie i usówanie elementów tablicy
lulia
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.06.2017

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


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?!?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  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.  
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




I tak troche od tematu, ale oczy aż bolą

usuwanie
Go to the top of the page
+Quote Post
lulia
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.06.2017

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


Wielkie dzięki (IMG:style_emoticons/default/smile.gif)
(IMG:style_emoticons/default/facepalmxd.gif) , ortografia (IMG:style_emoticons/default/oneeyedsmiley02.png)
Go to the top of the page
+Quote Post
woxala123
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


nie ortografia tylko ortogravia
Go to the top of the page
+Quote Post
Tomplus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


@lulia
Ale jak błąd zauważyłeś, to popraw go. Nie rób wstydu sobie bardziej (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 17:36