• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed PHP porównanie wartości dwóch tablic

0 głosów
68 wizyt
pytanie zadane 14 marca w PHP przez AnimaVillis Gaduła (3,490 p.)
zamknięte 14 marca przez AnimaVillis

Witam,

Mam dwie takie same tablice, jedna pobierana dynamicznie ze strony i zbudowana, druga pobierana z pliku json, obie posiadają te same wartości.

Mianowicie wyniki.json jest taki:

[
    {
        "title": "Lorem ipsum dolor sit amet.",
        "url": "Lorem ipsum dolor sit amet.",
        "id": "59091"
    },
    {
        "title": "Lorem ipsum dolor sit amet.",
        "url": "Lorem ipsum dolor sit amet.",
        "id": "59091"
    },
    {
        "title": "Lorem ipsum dolor sit amet.",
        "url": "Lorem ipsum dolor sit amet.",
        "id": "59091"
    },
    {
        "title": "Lorem ipsum dolor sit amet.",
        "url": "Lorem ipsum dolor sit amet.",
        "id": "59091"
    },
    {
        "title": "Lorem ipsum dolor sit amet.",
        "url": "Lorem ipsum dolor sit amet.",
        "id": "59091"
    }
]

Tablica zwracana przez php:

array(5) {
  [0]=>
  array(3) {
    ["title"]=>
    string(83) "Lorem ipsum dolor sit amet."
    ["url"]=>
    string(109) "Lorem ipsum dolor sit amet."
    ["id"]=>
    string(5) "59091"
  }
  [1]=>
  array(3) {
    ["title"]=>
    string(27) "Lorem ipsum dolor sit amet."
    ["url"]=>
    string(60) "Lorem ipsum dolor sit amet."
    ["id"]=>
    string(5) "60255"
  }
  [2]=>
  array(3) {
    ["title"]=>
    string(30) "Lorem ipsum dolor sit amet."
    ["url"]=>
    string(61) "Lorem ipsum dolor sit amet."
    ["id"]=>
    string(5) "60254"
  }
  [3]=>
  array(3) {
    ["title"]=>
    string(14) "Lorem ipsum dolor sit amet."
    ["url"]=>
    string(47) "Lorem ipsum dolor sit amet."
    ["id"]=>
    string(5) "60253"
  }
  [4]=>
  array(3) {
    ["title"]=>
    string(51) "Lorem ipsum dolor sit amet."
    ["url"]=>
    string(84) "Lorem ipsum dolor sit amet."
    ["id"]=>
    string(5) "60252"
  }
}

Kod, który napisałem żeby sprawdzać obie te tablice wygląda tak:

foreach($json_arr as $info){
                        if(in_array($info[$x]['id'], $oferty, TRUE)){
                               echo 'Obie takie same.'; 
                        } else {
                               echo 'Inne';
            }
        $x++;
        }

Niestety problem polega na tym, że nawet jak 2/5 są inne to czynność przypisana do nich wykonuje się dla wszystkich tak samo czyli powiedźmy tutaj jest powiadomienie na telegramie i zamiast dostać wiadomość, że 2/5 id są inne to wysyła 5 komunikatów. 

Jakieś podpowiedzi?

komentarz zamknięcia: Ogarnięte
komentarz 14 marca przez Arkadiusz Waluk Ekspert (282,180 p.)
Coś tu chyba jest pomieszane. Skoro już jest foreach, który iteruje po elementach, to po co dodatkowo ten $x? A $oferty to jakaś tablica, która zawiera same id informacji czy całą strukturę?
komentarz 14 marca przez AnimaVillis Gaduła (3,490 p.)
edycja 14 marca przez AnimaVillis
Obie tablice są takie same $oferty jest pobierana co 5 minut, $json_arr jest w pliku jsona. Obie są dokładnie takie same.

Bo $x pobiera numer w tablicy od 0 do 5.

 

No i przykłady tablic w pierwszym poście.

1 odpowiedź

+1 głos
odpowiedź 14 marca przez Arkadiusz Waluk Ekspert (282,180 p.)
wybrane 14 marca przez AnimaVillis
 
Najlepsza

W takim razie użycie w in_array() konkretnego id i próba szukania go w całej tablicy $oferty się nie uda. To mogłoby zadziałać, gdyby to była tablica samych id i tak możesz to zrobić. Jeśli to jest tablica, która ma wiele elementów w sobie i dalej dopiero klucze, które mają wartości, to nie zadziała. Nie wiem czego dokładnie później potrzebujesz. Zakładając, że chcesz tylko wyciągnąć informacje o tym czy dany komunikat był wysłany z danych czytanych z pliku możesz użyć array_column(), a następnie na tym co zwróci zrobić in_array(), na przykład: https://3v4l.org/f2UFi

Samo in_array() mogłoby być np. w pętli, gdzie zamiast stałego 5 z przykładu, u Ciebie byłoby to id konkretnego elementu z tablicy pobieranej ze strony.

1
komentarz 14 marca przez AnimaVillis Gaduła (3,490 p.)
Dzięki za naprowadzenie, ogarnąłem :)

Podobne pytania

0 głosów
2 odpowiedzi 494 wizyt
pytanie zadane 12 września 2017 w PHP przez sc4rface Dyskutant (7,710 p.)
0 głosów
1 odpowiedź 405 wizyt
pytanie zadane 30 lipca 2019 w JavaScript przez niezalogowany
+1 głos
2 odpowiedzi 149 wizyt
pytanie zadane 25 lutego 2021 w JavaScript przez MarcoPolo Nowicjusz (180 p.)

88,330 zapytań

136,922 odpowiedzi

305,590 komentarzy

58,601 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...