![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Robię sobie mały portal na bazie IPB oto funkcja klasy
przy wywołaniu funkcji wywala mi taki błąd Warning: array_keys() [function.array-keys]: The first argument should be an array in C:\xampp\htdocs\test\poziomkaciecie\php\model\classes\class.np.php on line 61 Warning: array_keys() [function.array-keys]: The first argument should be an array in C:\xampp\htdocs\test\poziomkaciecie\php\model\classes\class.np.php on line 61 nie ma takiego elementu6 tablica asocjacyjna dwuwymiarowa $news i $arts jest stworzona poza klasą i jest wczytana przed wywołaniem funkcji podobnie jak zmienna $lang Z góry dzięki za pomoc Ten post edytował Zdunek 19.11.2008, 19:43:57 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 84 Pomógł: 6 Dołączył: 26.03.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
http://php.net.pl/manual/pl/function.array-keys.php - zwraca tablicę zawierającą klucze tablicy macierzystej.
A nie wartość BOOLEAN. Jeśli chcesz sprawdzić czy element znajduję się w tablicy użyj... http://php.net.pl/manual/pl/function.in-array.php http://php.net.pl/manual/pl/function.array-key-exists.php Pozdrawiam. Ten post edytował Mize 19.11.2008, 19:53:23 -------------------- NULL;
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
zmieniłem na
if (array_key_exists(7,$news[$lang]) || array_key_exists(7,$arts[$lang])) i teraz wywala błąd Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in C:\xampp\htdocs\test\poziomkaciecie\php\model\classes\class.np.php on line 61 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in C:\xampp\htdocs\test\poziomkaciecie\php\model\classes\class.np.php on line 61 tablice $news i $arts są takie $news = array(array()); $arts = array(array()); $news["pl"][0]=6; $arts["pl"][0]=7; Edit: Wcześniej sobie robiłem w jednym pliku php bez klasy
i dobrze sprawdzało czy jest w tablicy asocjacyjnej, dwuwymiarowej, z indexem pierwszym o zmiennej $lang jest gdzieś 7 przy array_key_exists to już niestety nie działa więc array_keys jest dobrą w tym przypadku metodą, lecz niestety jest coś nie tak z odwołaniem do zmiennych z poza klasy... Edit2: przy użyciu in_array w jednym pliku php działa jak array_keys lecz przy klasie także wywala błąd Warning: in_array() [function.in-array]: Wrong datatype for second argument in C:\xampp\htdocs\test\poziomkaciecie\php\model\classes\class.np.php on line 61 Ten post edytował Zdunek 20.11.2008, 13:41:08 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
twoje zmienne globalne $news, $arts i $lang nie są widoczne w ciele klasy. musisz je zadeklarować wewnątrz metody klauzulą global:
ale to jest "obejście" nie w duchu OOP. najlepiej gdybyś te trzy zmienne (lub referencje do nich) przekazywał do konstruktora swojej klasy, a tam przepisał je do właściwości klasy - wtedy wszystkie metody będą miały do nich dostęp przez operator $this-> w zgodzie z zasadami OOP. -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
twoje zmienne globalne $news, $arts i $lang nie są widoczne w ciele klasy. musisz je zadeklarować wewnątrz metody klauzulą global:
zrobiłem tak i wywala mi taki błąd: Fatal error: Cannot use object of type news_arts as array in C:\xampp\htdocs\test\poziomkaciecie\php\model\classes\class.np.php on line 64 linia 64: if( array_keys($news[$lang],7) || array_keys($arts[$lang],7)) Cytat ale to jest "obejście" nie w duchu OOP. najlepiej gdybyś te trzy zmienne (lub referencje do nich) przekazywał do konstruktora swojej klasy, a tam przepisał je do właściwości klasy - wtedy wszystkie metody będą miały do nich dostęp przez operator $this-> w zgodzie z zasadami OOP. można jakiś link opisujący to ? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
Cytat Fatal error: Cannot use object of type news_arts as array in C:\xampp\htdocs\test\poziomkaciecie\php\model\classes\class.np.php on line 64 czyli twoje zmienne $news i $arts nie są tablicami a instancjami klasy news_arts... jednym słowem - pokazujesz nam jeden kod - a testujesz zupełnie inny i dziwisz się, że nasze podpowiedzi nie działają... pokaż cały kod - może wtedy da się wywnioskować coś rozsądnego. co do OOP - widzę, że nie kojarzysz o co chodzi. na wrzuć w google 'podstawy OOP' i poczytaj coś na ten temat... -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
klasa news_arts
plik z tablicami
w indexie
wszystko jest na pewno połączone i wczytuje się w odpowiedniej kolejności ... |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 493 Pomógł: 32 Dołączył: 14.04.2008 Skąd: Lenkowski.net Ostrzeżenie: (0%) ![]() ![]() |
może poużywaj $this->news zamiast zmiennych global. Jesli chcesz ja wysłać dalej mozesz przecież przesłać to przez funkcję lub użyć singleatona
-------------------- Wpadaj na mój kanał o PHP. Dużo mięsa 🥩!
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 84 Pomógł: 6 Dołączył: 26.03.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
W tym kodzie nie ma co poprawiać, lepiej go napisać od nowa bo to kiepska struktura zamknięta w klasie.
-------------------- NULL;
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 2 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
no cóż każdy kiedyś zaczynał, z tego powodu piszę w przedszkolu
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 20:57 |