de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
Pekka  supports GoFundMonica
Pekka supports GoFundMonica
Question

"Notice: Niezdefiniowana zmienna", "Notice: Undefined index", oraz "Notice: Niezdefiniowane przesunięcie" przy użyciu PHP

I'm uruchomiony skrypt PHP i nadal otrzymywać błędy, takie jak:

Notice: Undefined variable: my_variable_name in C:\wamp}mypath\index.php on line 10

Notice: Undefined index: my_index w C:\wamp\wmypath\index.php na linii 11

Linia 10 i 11 wygląda tak:

echo "My variable value is: " . $my_variable_name;
echo "My index value is: " . $my_array["my_index"];

Jakie jest znaczenie tych komunikatów o błędach?

Dlaczego pojawiają się one nagle? Używałem tego skryptu przez lata i nigdy nie miałem żadnych problemów.

Jak mogę je naprawić?


To jest ogólne pytanie referencyjne, aby ludzie mogli linkować do niego jako do duplikatu, zamiast wyjaśniać problem w kółko. Czuję, że jest to konieczne, ponieważ większość odpowiedzi w świecie rzeczywistym na ten temat jest bardzo specyficzna.

Powiązane dyskusje na Meta:

  • Co można zrobić z powtarzającymi się pytaniami?
  • Czy "pytania referencyjne" mają sens?
1118 2010-11-23T21:26:54+00:00 3
Peter Mortensen
Peter Mortensen
Edytowane pytanie 7. lipca 2019 в 7:01
Programowanie
arrays
variables
php
warnings
undefined-index
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
 Ish
Ish
23. listopada 2010 в 9:31
2010-11-23T21:31:08+00:00
Więcej
Źródło
Edytuj
#11396844

Spróbuj tych

Q1: to powiadomienie oznacza, że $varname nie jest zdefiniowany w bieżącym zakresie skryptu.

Q2: Użycie warunków isset(), empty() przed użyciem jakiejkolwiek podejrzanej zmiennej działa dobrze.

// recommended solution for recent PHP versions
$user_name = $_SESSION['user_name'] ?? '';

// pre-7 PHP versions
$user_name = '';
if (!empty($_SESSION['user_name'])) {
     $user_name = $_SESSION['user_name'];
}

Lub, jako szybkie i brudne rozwiązanie:

// not the best solution, but works
// in your php setting use, it helps hiding site wide notices
error_reporting(E_ALL ^ E_NOTICE);

Uwaga dotycząca sesji:

  • Kiedy używamy sesji, session_start(); jest wymagane, aby znajdowało się wewnątrz wszystkich plików używających sesji.

  • http://php.net/manual/en/features.sessions.php

 vaxquis
vaxquis
Edytowana odpowiedź 26. czerwca 2018 в 2:58
133
0
 Erik
Erik
23. listopada 2010 в 9:31
2010-11-23T21:31:48+00:00
Więcej
Źródło
Edytuj
#11396845

Generalnie z powodu "złego programowania", i możliwości popełnienia błędów teraz lub później.

  1. Jeśli to'błąd, to najpierw wykonaj poprawne przypisanie do zmiennej: $varname=0;
  2. Jeśli naprawdę jest ona zdefiniowana tylko czasami, przetestuj ją: if (isset($varname)), zanim jej użyjesz
  3. Jeśli to'dlatego, że źle ją przeliterowałeś, po prostu to popraw.
  4. Może nawet włącz ostrzeżenia w PHP-settings.
Jai  Kumar Rajput
Jai Kumar Rajput
Edytowana odpowiedź 11. kwietnia 2018 в 8:46
45
0
 DGM
DGM
23. listopada 2010 в 9:35
2010-11-23T21:35:20+00:00
Więcej
Źródło
Edytuj
#11396846

Oznacza to, że testujesz, oceniasz lub drukujesz zmienną, do której jeszcze nic nie przypisałeś. Oznacza to, że albo masz literówkę, albo musisz sprawdzić, czy zmienna została najpierw zainicjalizowana do czegoś. Sprawdź swoje ścieżki logiczne, może to być ustawione w jednej ścieżce, ale nie w innej.

 DGM
DGM
Edytowana odpowiedź 24. listopada 2010 в 2:43
40
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Jasur Fozilov
Zarejestrowany 9 godzin temu
2
Zuxriddin Muydinov
Zarejestrowany 1 dzień temu
3
Денис Анненский
Zarejestrowany 3 dni temu
4
365
Zarejestrowany 1 tydzień temu
5
True Image
Zarejestrowany 1 tydzień temu
DA
DE
EL
ES
ET
FR
ID
IT
JA
LV
NL
PL
PT
RU
TR
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem