Περισσότερα
Ανακοίνωση PHP: κατά την ανάγνωση δεδομένων
Λαμβάνω αυτό το σφάλμα PHP:
PHP Notice: Undefined offset: 1
Εδώ είναι ο κώδικας PHP που το προκαλεί:
$file_handle = fopen($path."/Summary/data.txt","r"); //open text file
$data = array(); // create new array map
while (!feof($file_handle) ) {
$line_of_text = fgets($file_handle); // read in each line
$parts = array_map('trim', explode(':', $line_of_text, 2));
// separates line_of_text by ':' trim strings for extra space
$data[$parts[0]] = $parts[1];
// map the resulting parts into array
//$results('NAME_BEFORE_:') = VALUE_AFTER_:
}
Τι σημαίνει αυτό το σφάλμα; Τι προκαλεί αυτό το σφάλμα;
60
3
Αλλαγή
σε
ή απλά:
Δεν υπάρχει σε κάθε γραμμή του αρχείου σας άνω και κάτω τελεία και επομένως το explode σε αυτήν επιστρέφει έναν πίνακα μεγέθους 1.
Σύμφωνα με το php.net πιθανές τιμές επιστροφής από το explode:
Πώς να αναπαράγετε το παραπάνω σφάλμα σε PHP:
Τι σημαίνει αυτό το μήνυμα σφάλματος;
Σημαίνει ότι ο μεταγλωττιστής της php έψαξε για το κλειδί
1
και έτρεξε το hash εναντίον του και δεν βρήκε καμία τιμή που να σχετίζεται με αυτό και μετά είπεΑπροσδιόριστο offset: 1
Πώς μπορώ να εξαφανίσω αυτό το σφάλμα;
Ρωτήστε τον πίνακα αν υπάρχει το κλειδί πριν επιστρέψετε την τιμή του, όπως παρακάτω:
Αν ο πίνακας δεν περιέχει το κλειδί σας, μην ρωτήσετε για την τιμή του. Αν και αυτή η λύση κάνει διπλή δουλειά για το πρόγραμμά σας να "ελέγξει αν υπάρχει'και μετά "πάει να το πάρει'.
Εναλλακτική λύση που είναι ταχύτερη:
Αν το να πάρετε ένα κλειδί που λείπει είναι μια εξαιρετική περίσταση που προκαλείται από κάποιο σφάλμα, είναι πιο γρήγορο να πάρετε απλά την τιμή (όπως στο
echo $yarr[1];
), και να πιάσετε αυτό το σφάλμα offset και να το χειριστείτε ως εξής: https://stackoverflow.com/a/5373824/445131Πρόκειται για μια ειδοποίηση "PHP Notice", οπότε θεωρητικά μπορείτε να την αγνοήσετε. Αλλάξτε το αρχείο
php.ini
:Σε
Αυτό δείχνει όλα τα σφάλματα, εκτός από τις ειδοποιήσεις.