Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Admin Content Manager Warning: Illegal string offset 'id'

    Jürgen

    • Viel Schreiber
    • Beiträge: 891
    • Geschlecht:
    Hallo,

    habe im content manager beim Aufruf jedes content ca. 10 Warnungen (es sind immer dieselben)

    Warning: Illegal string offset 'id' in /homepages/36/XXXXXX/htdocs/XXXX/admin/includes/functions/html_output.php on line 265
    Warning: Illegal string offset 'id' in /homepages/36/XXXXXX/htdocs/XXXX/admin/includes/functions/html_output.php on line 267
    Warning: Illegal string offset 'id' in /homepages/36/XXXXXX/htdocs/XXXX/admin/includes/functions/html_output.php on line 272

    Shop ist v1.06 rev 4356, Server php 5.4.17

    Hat jemand eine Idee?

    Soweit ich das beurteilen kann, scheint es die Funktion an sich nicht zu beeinträchtigen.

    Gruss

    Jürgen

    Linkback: https://www.modified-shop.org/forum/index.php?topic=27105.0

    Blaumann

    • Frisch an Board
    • Beiträge: 59
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #1 am: 07. September 2013, 20:08:59
    Hallo,

    dieses Phänomen kann ich in meiner Version auch feststellen.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.891
    • Geschlecht:
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #2 am: 08. September 2013, 05:13:30
    Wundert mich ein wenig da doch abgefragt wird
    Code: PHP  [Auswählen]
    if (is_array($values)) {

    Macht mal testweise in Zeile 263 aus dem
    Code: PHP  [Auswählen]
    if (is_array($values)) {

    das hier
    Code: PHP  [Auswählen]
    if (is_array($values) && !empty($values) && array_key_exists('id', $values)) {

    oder
    Code: PHP  [Auswählen]
    if (is_array($values) && !empty($values) && isset($val['id'])) {

    und analog an den anderen Stellen die solche Fehlermeldungen ausgeben.
    Müsste, sollte, könnte ;-) helfen.

    Gruß,
    noRiddle

    cYbercOsmOnauT

    • modified Team
    • Beiträge: 914
    • Geschlecht:
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #3 am: 08. September 2013, 22:40:12
    Code: PHP  [Auswählen]
    if (is_array($values) && !empty($values) && isset($val['id'])) {
    das is_array($values) && !empty($values) ist redundant, denn wenn es kein Array ist, oder das Array leer ist, ist auch der Key nicht vorhanden. ;) Also sollte
    Code: PHP  [Auswählen]
    if (isset($values['id'])) {
    völlig reichen.
    Viele Grüße,
    Tekin Birdüzen - Zend Certified Engineer

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.891
    • Geschlecht:
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #4 am: 09. September 2013, 02:38:37
    Korrekt, sollte ;-) reichen.

    Das hier ist aber nicht redundant:
    Code: PHP  [Auswählen]
    is_array($values) && !empty($values)
    denn ein existierendes Array (also array_exists() == true)
    kann auch empty sein.
    Zwar würde
    Code: PHP  [Auswählen]
    empty($array)
    auch true ergeben wenn es nicht existiert,
    aber eben auch true, wenn es existiert aber leer ist.

    Trotzdem reicht natürlich
    Code: PHP  [Auswählen]
    if (isset($values['id']))

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.891
    • Geschlecht:
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #5 am: 09. September 2013, 03:26:28
    Manchmal ist man schwer von Begriff  :doh:
    Verstehe, nun, daß du ja nicht gemeint hast
    Code: PHP  [Auswählen]
    is_array($values) && !empty($values)
    sind redundant in Bezug untereinander
    sondern zusammen in Bezug auf
    Code: PHP  [Auswählen]
    if (isset($values['id']))

    Ein Gespräch mit einem anderen Team-Mitglied machte mich wach für das Verständnis,
    derjenige weiß schon ;-).

    Also, du hast natürlich Recht, Tekin :peace:

    Gruß,
    noRiddle

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #6 am: 09. September 2013, 11:19:12
    @tekin und noriddle

    Da der Codeblock so aussieht

    Code: PHP  [Auswählen]
    if (is_array($values)) {
          foreach ($values as $key=>$val) {
            $field .= '<option value="' .$val['id'] . '"';

    passt Eure Diskussion leider nicht.

    Evtl hilft ein

    Code: PHP  [Auswählen]
    if (is_array($values) && count($values) > 0) {

    Blaumann

    • Frisch an Board
    • Beiträge: 59
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #7 am: 09. September 2013, 13:30:42
    Noch ein kleiner Nachtrag.
    Nur in meiner ( 1 zu 1 Kopie ) Xampp-Version erscheint der Fehler. In der Online-Version erscheint der Fehler nicht.
    Parallel läuft bei mir das unmodifizierte Modified 1.6 in der Xampp-Version fehlerfrei.
    Es könnte sich also bei meinem Update zu 1.6 irgendwo ( auch bei einer anderen Datei ) ein Fehler eingeschlichen haben.

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #8 am: 09. September 2013, 13:39:24
    Das "Problem" kommt von PHP 5.4
    https://www.google.de/#q=illegal+string+offset+php+5.4

    Es ist im Prinzip kein Fehler von 5.4, sondern, wurde von 5.3 nur "abgefangen".

    Der "Fehler" kam (kommt) bei PHP 5.4 und Modified noch in mehreren Dateien vor.

    Nachtrag:
    http://php.net/manual/en/language.types.string.php
    Zitat
    As of PHP 5.4 string offsets have to either be integers or integer-like strings, otherwise a warning will be thrown. Previously an offset like "foo" was silently cast to 0.

    cYbercOsmOnauT

    • modified Team
    • Beiträge: 914
    • Geschlecht:
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #9 am: 09. September 2013, 13:49:31
    Code: PHP  [Auswählen]
    if (is_array($values)) {
          foreach ($values as $key=>$val) {
            $field .= '<option value="' .$val['id'] . '"';
    Mea culpa. Ich hab nicht nachgesehen, sondern hielt mich nur an noriddle's Post.

    Lösung:
    Code: PHP  [Auswählen]
    if (is_array($values)) {
          foreach ($values as $key=>$val) {
            if (!is_array($val) || !isset($val['id'])) continue;
            $field .= '<option value="' .$val['id'] . '"';

    Anscheinend ist $val auch mal ein String.. oder immer wieder? Die Fehlermeldung besagt jedenfalls, dass man einen Teil des Strings $val anspricht der illegal ist. Wie manche wahrscheinlich wissen, kann man einzelne Zeichen eines Strings auch per $val{$position} oder $val[$position] abfragen. $position muss natürlich Integer sind und 'id' ist es nicht.

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #10 am: 09. September 2013, 13:55:00
    Hallo Tekin,

    im values array gibt es immer den id index.

    Problem ist ein leeres array im foreach, deshalb sollte vor einem foreach immer auf count > 0 getestet werden.

    Gruss Web28

    cYbercOsmOnauT

    • modified Team
    • Beiträge: 914
    • Geschlecht:
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #11 am: 09. September 2013, 14:40:25
    Die Fehlermeldung verweist aber nicht auf ein Array, sondern einen String. Ist aber bei meiner Lösung Rille, denn sie passt wenn $val ein String ist und auch wenn es ein Array ist (voll oder leer ist dabei auch nicht relevant).

    Wenn $values als solches leer ist, wird der foreach-Block als Ganzes übergangen.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.891
    • Geschlecht:
    Re: Admin Content Manager Warning: Illegal string offset 'id'
    Antwort #12 am: 09. September 2013, 16:05:40
    Korrekt.
    Mein dummer Fehler:
    Kann ja nicht außerhalb der foreach-Schleife nach isset($val['id']) fragen  :doh:
    Nächstes mal genauer schauen, verprochen ;-).

    Gruß,
    noRiddle
    7 Antworten
    6406 Aufrufe
    30. Dezember 2014, 13:29:50 von kaisa
    6 Antworten
    4226 Aufrufe
    01. Mai 2015, 20:43:35 von toppi
               
    anything