Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Odszukanie wartości z kolekcji
Generic
post 25.02.2019, 22:16:13
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

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


Dodałem do mojej witryny wyświetlanie zdjęć, które zamieszczam na instagramie, jednak chciałbym aby na stronie pojawiały się tylko te, które zawierają konkretny tag. Moja kolekcja wygląda następująco:

  1. Collection {#672 ▼
  2. #items: array:5 [▼
  3. 0 => {#667 ▼
  4. +"id": "1111111111"
  5. +"user": {#666 ▶}
  6. +"images": {#668 ▶}
  7. +"created_time": "1111111111"
  8. +"caption": {#677 ▶}
  9. +"user_has_liked": false
  10. +"likes": {#663 ▶}
  11. +"tags": []
  12. +"filter": "Normal"
  13. +"comments": {#676 ▶}
  14. +"type": "image"
  15. +"link": "https://www.instagram.com/p/111111111111/"
  16. +"location": null
  17. +"attribution": null
  18. +"users_in_photo": []
  19. }
  20. 1 => {#679 ▼
  21. +"id": "1111111111"
  22. +"user": {#680 ▶}
  23. +"images": {#682 ▶}
  24. +"created_time": "1111111111"
  25. +"caption": {#685 ▶}
  26. +"user_has_liked": false
  27. +"likes": {#687 ▶}
  28. +"tags": array:1 [▼
  29. 0 => "testowy_hasztag"
  30. ]
  31. +"filter": "Normal"
  32. +"comments": {#688 ▶}
  33. +"type": "image"
  34. +"link": "https://www.instagram.com/p/1111111111/"
  35. +"location": null
  36. +"attribution": null
  37. +"users_in_photo": []
  38. }
  39. 2 => {#689 ▶}
  40. 3 => {#699 ▶}
  41. 4 => {#709 ▶}
  42. ]
  43. }


Czy ktoś mógłby mi dać wskazówkę jak przeszukać tablicę znając jedynie klucz pod, którym się znajduje czyli 'tags'. Dodam, że określany tag - roboczo nazwałem go testowy_hasztag nie zawsze będzie pod kluczem [0], więc nie stanowi on w tym przypadku żadnego identyfikatora, którym mógłbym się posłużyć.

Obecnie napisałem tego typu rozwiązanie ale jak powyżej nie zda on egzaminu gdyż wykorzystuje konkretny klucz - [0], aby dostać się do wartości danego tagu, a on może znajdować się pod różnymi kluczami.

  1. $results = collect($instagram->media()->where('tags', [0]));


Nie mogę znaleźć pomysłu jak mógłbym to poprawić, mam nadzieję że nakierujecie mnie na właściwe rozwiązanie problemu.

Ten post edytował Generic 25.02.2019, 22:27:57
Go to the top of the page
+Quote Post
markonix
post 25.02.2019, 22:27:53
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Kolekcja, kolekcji nie równa. To nie jest generyczna klasa PHP tylko klasa frameworka, strzelam, że Laravel, wtedy masz mnóstwo ciekawych metod do szukania/filtrowania:

https://laravel.com/docs/5.7/collections#method-filter


--------------------
Go to the top of the page
+Quote Post
Generic
post 25.02.2019, 23:26:17
Post #3





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

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


markonix dzięki za wskazówkę, dzięki Tobie moja nauka staje się łatwiejsza, wymyśliłem coś poniżej, daj znać jeśli możesz co o tym sądzisz.

  1. collect($instagram->media())->filter(function ($item) {
  2. return in_array('roboczy_hasztag', $item->tags);
  3. });


Wydaje mi się to najprostszym z możliwych rozwiązań.
Go to the top of the page
+Quote Post
markonix
post 25.02.2019, 23:37:15
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Bez collect skoro media już zwraca kolekcję.


--------------------
Go to the top of the page
+Quote Post
Generic
post 26.02.2019, 08:14:36
Post #5





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

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


Cytat(markonix @ 25.02.2019, 23:37:15 ) *
Bez collect skoro media już zwraca kolekcję.


Usunięcie collect wyrzuca mi wyjątek mówiący o wywołaniu funkcji filter w tablicy.
Go to the top of the page
+Quote Post
markonix
post 26.02.2019, 18:04:45
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


  1. $instagram->media()->where('tags', [0])

Jeżeli tu używałeś metody where to stwierdziłem, że to już jest kolekcja. Jak widać nie jest nią więc nie usuwaj helpera.

Ten post edytował markonix 26.02.2019, 18:05:04


--------------------
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 Wersja Lo-Fi Aktualny czas: 16.04.2024 - 23:15