Skocz do zawartości
Pecetowicz Forum komputerowe

[PHP] Problem z warunkiem IF in_array


Przejdź do rozwiązania Rozwiązane przez Mativve,

Rekomendowane odpowiedzi

  • Ekspert

Witam, mam zagwozdkę od paru godzin w sprawie niedziałającego warunku IF

W bazie danych mam rekord, który w tabeli zawiera uid użytkownika :

a:1:{i:0;a:3:{i:0;s:1:"4";i:1;s:1:"1";i:2;s:4:"2764";}}

( Z czego "4", "1", "2764" są to  ID użytkowników)

co do kodu nie jest niczym skomplikowanym i wygląda w ten sposób:

        $who = unserialize($seenby['who']); /* who to kolumna w której przetrzymuje ID użytkownikow */
        if (in_array($mybb->user['uid'], $who))
        {
          echo $mybb->user['uid']. "<br/>";
        } else {
          echo "brak";
        }

 

Dziękuje za pomoc dobrym duszom 😆

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

Tak sprawdzałem, od razu pomyślałem, że może są puste, ale okazało się niestety (dla mnie) działają prawidłowo.

 

uid = string(1) "1"
tabela = array(1) { [0]=> array(3) { [0]=> string(1) "4" [1]=> string(1) "1" [2]=> string(4) "2764" } }

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Administrator
  • Rozwiązanie
Napisano (edytowane)

Niestety in_array szuka chyba po głównych elementach i nie idzie w głąb tablicy (tak to sobie tłumaczę), gdy zamiast $who dałem $who[0] to wyszło mi true - mam nadzieję, że dobrze to ogarnąłem

Edytowane przez Mativve
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

`unserialize( ... )` na tym JSONie zwróci taką strukturę:

[
    [
         "4", "1", "2764",
    ]
]

Trochę słabo, ale... Do uratowania. Spróbuj tego tego kodu:

$who = array_merge(...unserialize($seenby['who'] ?? '{}'));
$userId = (string)($mybb->user['uid'] ?? '0');

if ($userId === '0' || !in_array($userId, $who, true)) {
	return;
}

echo $userId;

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...