PHP-Warnung – Unzulässiger String-Offset

Lesezeit: 2 Minuten

PHP Warnung Unzulassiger String Offset
Rom

Daher verstehe ich nicht, warum das nicht funktioniert. Ich verwende WordPress und ein Plugin namens ACF, um einige Daten zu füllen. Ich durchlaufe mein Repeater-Feld, um die Daten so auszuspucken:

<?php

    $links = get_field('footer_links');  // spits out the array

    if($links) {
        foreach ( $links as $link ) {
            $logo = $link['logo'];
            $link = $link['link'];
            $text = $link['text'];

            echo '<div class="link">';
            echo '  <a href="'.$link.'"><img src="'.$logo.'" /><p>'.$text.'</p></a>';
            echo '</div>';
        }
    }
    // Logo spits out a image path
    // link spits out the URL path
    // text SHOULD just spit out the title, however throws PHP warning

?>

Für die Variable $text Ich erhalte eine PHP-Warnung.

Warnung: Unzulässiger String-Offset ‘text’ in…

Warum sind meine anderen Variablen — $logo, $link werfen Sie diese Warnung nicht? Sie werden auf die gleiche Weise wie die anderen erstellt $text Variable.

Ich habe versucht, das gesamte Repeater-Feld neu zu erstellen und den Namen usw. zu ändern, ohne Erfolg.

Hier ist mein print_r($links);

Array
(
    [0] Array
        (
            [logo] http://domainname.com/imagepath
            https://stackoverflow.com/questions/22099529/php-warning-illegal-string-offset http://.....
            [text] Text1
        )

    [1] Array
        (
            [logo] http://domainname.com/imagepath
            https://stackoverflow.com/questions/22099529/php-warning-illegal-string-offset http://.....
            [text] Text2
        )

    [2] Array
        (
            [logo] http://domainname.com/imagepath
            https://stackoverflow.com/questions/22099529/php-warning-illegal-string-offset http://.....
            [text] Text3
        )

)

  • Lahmer Hack: if(!isset($link['text'])) { $link['text'] = ''; }

    – Scott Arciszewski

    28. Februar 2014 um 15:43 Uhr

  • Also was macht print_r($links) oder print_r($link) innerhalb der Schleife geben Sie?

    – sjagr

    28. Februar 2014 um 15:46 Uhr

  • @Scott Das ist nicht die Frage. Die Frage ist, warum es diesen Fehler auslöst.

    – GuyT

    28. Februar 2014 um 15:46 Uhr

  • Versuchen $k = array_keys($link); var_dump($link); um zu sehen, ob $link[‘text’] wird für jede Schleife definiert.

    – Scott Arciszewski

    28. Februar 2014 um 15:48 Uhr

PHP Warnung Unzulassiger String Offset
Loïc

Fehler wird hier geworfen:

$link['text'];

Array $link fehlt Index ['text']. Das liegt daran, dass Sie die Array-Variable hier überschreiben:

$link = $link['link'];

Ändern Sie das zu:

$href = $link['link'];

Und du bist Gold.

  • @Romes +1 Sie überschreiben die $link Array-Variable. Umbenennen $link = $link['link'] zu $href = $link['link'].

    – CodeWütend

    28. Februar 2014 um 15:48 Uhr


  • Ha! Danke @CodeAngry für die Erklärung. Ich stimme der Antwort selbst nicht zu, da sie die Frage von OP nicht vollständig beantwortet warum sein Code hat nicht funktioniert. EDIT: Danke für die Bearbeitung. +1 jetzt

    – sjagr

    28. Februar 2014 um 15:51 Uhr


  • Wow, ich bin ziemlich blöd, das habe ich gar nicht gesehen! Vielen Dank.

    – Rom

    28. Februar 2014 um 15:51 Uhr

  • @sjagr Es behebt das Problem. Jeder PHP-Programmierer sollte in der Lage sein, das Problem anhand der Lösung herauszufinden.

    – CodeWütend

    28. Februar 2014 um 15:51 Uhr

  • Ja, richtig, tut mir leid, dass ich es nicht erklärt habe, dachte, es wäre offensichtlich genug.

    – Loïc

    28. Februar 2014 um 15:53 ​​Uhr

1004800cookie-checkPHP-Warnung – Unzulässiger String-Offset

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy