ugrás a tartalomhoz

PHP 7.1 array kezelés

Theo76 · 2017. Már. 2. (Cs), 12.22
Sziasztok!

Ubuntu Server 16.10-en van fent php 7.1. Php7.0-nál még tökéletesen működött:

class valami {
    protected $var = array();

    public function method( $data ) {
        ...
        foreach( $data as $value ) {
            $var[] = $value;
        }
        ...
    }
}
Ezt a hibát dobja:
Fatal error: Uncaught Error: [] operator not supported for strings in
 
1

...

vbence · 2017. Már. 3. (P), 00.42
Azt tippelném, a "..." részen valahol érteket adsz a $var-nak (és az string). Próbáld meg előállítani a minimális kódot, ami tényleg kiváltja.
2

String

janoszen · 2017. Már. 3. (P), 08.50
Ez a hiba csak es kizarolag akkor fordul elo, ha stringet probalsz meg tombkent kezelni, pl igy:

$valami = "Hello!";
echo($valami[0]);


Hogy miert azt ne kerdezd, sztem lenne ertelme, de a PHP-ek igy dontottek.

Mas: azt ugye tudod, hogy nem LTS Ubuntut hasznalni szerveren elegge oroszrulett?
5

ez így nem igaz

_subi_ · 2017. Már. 3. (P), 13.30
Az általad írt kód teljesen rendben van, és szépen ki is ír egy "H" betűt. Ez a korábbi PHP verziókban is így volt...

Szerintem inkább olyasmi történhetett, hogy a kérdező valahol figyelmetlenségből lehagyta "[]"-t, pl. $var[] = $value helyett $var = $value-t írt, és utána már persze, hogy nem tud új elemet hozzáadni. De ez csak egy tipp...

Ha az egész kódot látnánk, nyilván könnyebb lenne kitalálni, hol a hiba.
3

this

Hidvégi Gábor · 2017. Már. 3. (P), 09.50
A $var-t az osztály változójaként definiálod, míg a kódban csak szimplán $var-ként hivatkozol rá, nem hiányzik előle egy this?
4

igen... a class egyik részébe sima stringgé lett átalakítva

Theo76 · 2017. Már. 3. (P), 13.26
Megvan a hiba... a program a class egy másik részén sima változóként kapott értéket, és így nem tömbként működött a továbbiakban. Az érdekessége, hogy ezt a classot, már jó pár hónapja csináltam, és egész eddig semmi gond nem volt vele... csinálta a dolgát napi szinten. Eddig ezt a hiba nem jött elő, mert ez egy táblázat generáló class volt, és elég gyakran futott le. Ezért nem is gondoltam erre a lehetőségre.
6

megelőztél

_subi_ · 2017. Már. 3. (P), 13.32
Míg a választ írtam janoszennek, pont leírtad, amire tippeltem, azaz, hogy valahol simán értéket adtál a változónak, ami eredetileg tömb lett volna.
7

:)

Theo76 · 2017. Már. 3. (P), 13.49
köszönöm mindenkinek a segítséget. :)