PHP-Arrays und Lösung für 'undefined index' Fehler

Arbeite ich durch einige code erfolgt durch einen früheren Entwickler. Ich bin Recht neu in PHP, so Frage ich mich, ob es irgendwelche bekannten Muster oder eine Lösung für dieses problem.

Grundsätzlich der ursprüngliche Autor nicht überprüfen Sie alle array-Indizes, bevor er versucht, Sie zu benutzen. Ich weiß, dass ich kann verwenden Sie isset() zu überprüfen, bevor es verwendet wird, aber gerade jetzt gibt es Hunderte von Zeilen, in denen diese Fehler auftreten. Bevor ich auf einige Musik-und start knallte mein Kopf in meine Tastatur, die ich will, um sicherzustellen, dass es nicht einige nette Abkürzung für den Umgang mit diesem. Hier ist ein typischer code-Abschnitt, der ich bin, schaut unter:

    /* snip */
"text" => $link . $top_pick_marker . $output['author'] . " " .  " " . 
                              $output['new_icon'] . $output['rec_labels'] . "   " 
                    . $output['admin_link']
                    . $output['alternate_title'] 
                    . $output['access_info'] 
                    . $output['description'] 
                    . $output['url']
                    . $output['subject_terms'] 
                    . $output['form_subdivisions'] 
                    . $output['dates_of_coverage']  
                    . $output['update_frequency']  
                    . $output['place_terms'],
    /* snip */

Also ich weiß, dass ich kann verwenden Sie isset() hier für jedes Element. Ich würde neu anordnen, die Dinge ein wenig, und entfernen Sie alle die Verkettung, wie es jetzt ist. Gibt es irgendeine andere einfache Möglichkeit, dies zu tun, oder bin ich einfach dabei geblieben?

Kommentar zu dem Problem
+1 - Dies ist eigentlich eine gute Frage. In den "alten Tagen" von PHP, diese E_NOTICE Fehler nicht geworfen, und der Referenzierung von noch nicht initialisierten array-Indizes sehr verbreitet war. Offensichtlich ist dies eine schlechte Angewohnheit, aber es ist einfach zu tun mit der losen Typisierung von PHP. Die E_NOTICES sind ein gutes Werkzeug, um zu helfen, ziehen Sie Ihren code jetzt. Allerdings finde ich die schiere Langeweile haben, rufen Sie isset() oder empty() auf alle Prüfungen mit arrays ganz geisttötende. Kommentarautor: zombat

InformationsquelleAutor der Frage | 2009-07-28

Schreibe einen Kommentar