Bonjour
sur un de mes sites je suis en train de passer de PHP4 à PHP5
la ligne ci-dessous génère une erreur (en PHP5) que je ne comprends pas.
d'autant + que c'est le type de synthaxe que j'utilise déjà sur une autre
machine PHP5
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Le 10/12/2008 23:14, Toto a écrit :
sur un de mes sites je suis en train de passer de PHP4 à PHP5 la ligne ci-dessous génère une erreur (en PHP5) que je ne comprends pas. d'autant + que c'est le type de synthaxe que j'utilise déjà sur une autre machine PHP5
J'ai regardé sur le www et je n'ai pas trouvé d'explications satisfaisantes. Auriez-vous des pistes.
Ben je ne sais pas, mais moi en tapant le titre de ton article dans Google et en regardant le premier résultat il me semble qu'il y a la solution (d'autant que l'auteur de la question précise, après que la réponse lui a été donnée, que ça marchait en PHP4 mais plus en PHP5).
Ce que j'en comprends, c'est que si tu as auparavant utilisé $etab_informationpour y stocker une chaîne de caractères, alors il faut d'abord en faire un tableau : $etab_information = array(); ... avant de l'utiliser comme un tableau : $etab_information[...] = ...
Au fait, c'est confirmé par le deuxième résultat de Google (mais en anglais) : http://informationideas.com/news/2006/06/14/fatal-error-cannot-use-string-offset-as-an-array-in/
Le 10/12/2008 23:14, Toto a écrit :
sur un de mes sites je suis en train de passer de PHP4 à PHP5
la ligne ci-dessous génère une erreur (en PHP5) que je ne comprends pas.
d'autant + que c'est le type de synthaxe que j'utilise déjà sur une autre
machine PHP5
J'ai regardé sur le www et je n'ai pas trouvé d'explications satisfaisantes.
Auriez-vous des pistes.
Ben je ne sais pas, mais moi en tapant le titre de ton article dans
Google et en regardant le premier résultat il me semble qu'il y a la
solution (d'autant que l'auteur de la question précise, après que la
réponse lui a été donnée, que ça marchait en PHP4 mais plus en PHP5).
Ce que j'en comprends, c'est que si tu as auparavant utilisé
$etab_informationpour y stocker une chaîne de caractères, alors
il faut d'abord en faire un tableau :
$etab_information = array();
... avant de l'utiliser comme un tableau :
$etab_information[...] = ...
Au fait, c'est confirmé par le deuxième résultat de Google (mais en
anglais) :
http://informationideas.com/news/2006/06/14/fatal-error-cannot-use-string-offset-as-an-array-in/
sur un de mes sites je suis en train de passer de PHP4 à PHP5 la ligne ci-dessous génère une erreur (en PHP5) que je ne comprends pas. d'autant + que c'est le type de synthaxe que j'utilise déjà sur une autre machine PHP5
J'ai regardé sur le www et je n'ai pas trouvé d'explications satisfaisantes. Auriez-vous des pistes.
Ben je ne sais pas, mais moi en tapant le titre de ton article dans Google et en regardant le premier résultat il me semble qu'il y a la solution (d'autant que l'auteur de la question précise, après que la réponse lui a été donnée, que ça marchait en PHP4 mais plus en PHP5).
Ce que j'en comprends, c'est que si tu as auparavant utilisé $etab_informationpour y stocker une chaîne de caractères, alors il faut d'abord en faire un tableau : $etab_information = array(); ... avant de l'utiliser comme un tableau : $etab_information[...] = ...
Au fait, c'est confirmé par le deuxième résultat de Google (mais en anglais) : http://informationideas.com/news/2006/06/14/fatal-error-cannot-use-string-offset-as-an-array-in/
Pascal PONCET
Olivier Miakinen a écrit :
Ce que j'en comprends, c'est que si tu as auparavant utilisé $etab_informationpour y stocker une chaîne de caractères, alors il faut d'abord en faire un tableau : $etab_information = array(); ... avant de l'utiliser comme un tableau : $etab_information[...] = ...
Tiens, je ne savais pas, intéressant...
Cela dit, c'est assez logique puisqu'on peut capturer un caractère d'une chaîne sous la forme d'un tableau indicé :
$myvar = "hello"; echo $myvar[1]; // donne "e"
Je comprends que PHP, bien que non typé, y perde un peu son latin si on mélange tout.
Cordialement, Pascal
Olivier Miakinen a écrit :
Ce que j'en comprends, c'est que si tu as auparavant utilisé
$etab_informationpour y stocker une chaîne de caractères, alors
il faut d'abord en faire un tableau :
$etab_information = array();
... avant de l'utiliser comme un tableau :
$etab_information[...] = ...
Tiens, je ne savais pas, intéressant...
Cela dit, c'est assez logique puisqu'on peut capturer un caractère d'une
chaîne sous la forme d'un tableau indicé :
$myvar = "hello";
echo $myvar[1]; // donne "e"
Je comprends que PHP, bien que non typé, y perde un peu son latin si on
mélange tout.
Ce que j'en comprends, c'est que si tu as auparavant utilisé $etab_informationpour y stocker une chaîne de caractères, alors il faut d'abord en faire un tableau : $etab_information = array(); ... avant de l'utiliser comme un tableau : $etab_information[...] = ...
Tiens, je ne savais pas, intéressant...
Cela dit, c'est assez logique puisqu'on peut capturer un caractère d'une chaîne sous la forme d'un tableau indicé :
$myvar = "hello"; echo $myvar[1]; // donne "e"
Je comprends que PHP, bien que non typé, y perde un peu son latin si on mélange tout.
Cordialement, Pascal
Olivier Miakinen
Le 11/12/2008 17:30, Pascal PONCET a écrit :
Ce que j'en comprends, c'est que si tu as auparavant utilisé $etab_informationpour y stocker une chaîne de caractères, alors il faut d'abord en faire un tableau : $etab_information = array(); ... avant de l'utiliser comme un tableau : $etab_information[...] = ...
Tiens, je ne savais pas, intéressant...
Cela dit, c'est assez logique puisqu'on peut capturer un caractère d'une chaîne sous la forme d'un tableau indicé :
$myvar = "hello"; echo $myvar[1]; // donne "e"
Oui.
Note qu'une autre possibilité, que j'avais envisagée initialement puis annulée (d'où une espace manquante dans la deuxième ligne citée ci-dessus, comme souvent quand on fait une modif à la hâte), ce serait que le problème soit non pas dans $etab_information mais dans $row.
Je l'ai annulée parce que je ne vois pas comment ce code pourrait marcher en PHP4 si $row ou $row[0] est une chaîne. Cela dit, en dehors de ce contexte il faudrait peut-être regarder là aussi.
Je comprends que PHP, bien que non typé, y perde un peu son latin [...]
^^^^^^^^^^^^^^^^^
C'est justement parce que PHP n'est *pas* un langage non type. Il est peut-être faiblement typé, si on veut nommer comme ça le fait qu'il existe tant de transtypages implicites, mais il existe bien huit types distincts dans PHP. Il est même un peu plus typé que le C quand on compte que le type booléen est différent du type integer.
Cordialement, -- Olivier Miakinen
Le 11/12/2008 17:30, Pascal PONCET a écrit :
Ce que j'en comprends, c'est que si tu as auparavant utilisé
$etab_informationpour y stocker une chaîne de caractères, alors
il faut d'abord en faire un tableau :
$etab_information = array();
... avant de l'utiliser comme un tableau :
$etab_information[...] = ...
Tiens, je ne savais pas, intéressant...
Cela dit, c'est assez logique puisqu'on peut capturer un caractère d'une
chaîne sous la forme d'un tableau indicé :
$myvar = "hello";
echo $myvar[1]; // donne "e"
Oui.
Note qu'une autre possibilité, que j'avais envisagée initialement
puis annulée (d'où une espace manquante dans la deuxième ligne citée
ci-dessus, comme souvent quand on fait une modif à la hâte), ce serait
que le problème soit non pas dans $etab_information mais dans $row.
Je l'ai annulée parce que je ne vois pas comment ce code pourrait
marcher en PHP4 si $row ou $row[0] est une chaîne. Cela dit, en dehors
de ce contexte il faudrait peut-être regarder là aussi.
Je comprends que PHP, bien que non typé, y perde un peu son latin [...]
^^^^^^^^^^^^^^^^^
C'est justement parce que PHP n'est *pas* un langage non type. Il est
peut-être faiblement typé, si on veut nommer comme ça le fait qu'il
existe tant de transtypages implicites, mais il existe bien huit types
distincts dans PHP. Il est même un peu plus typé que le C quand on
compte que le type booléen est différent du type integer.
Ce que j'en comprends, c'est que si tu as auparavant utilisé $etab_informationpour y stocker une chaîne de caractères, alors il faut d'abord en faire un tableau : $etab_information = array(); ... avant de l'utiliser comme un tableau : $etab_information[...] = ...
Tiens, je ne savais pas, intéressant...
Cela dit, c'est assez logique puisqu'on peut capturer un caractère d'une chaîne sous la forme d'un tableau indicé :
$myvar = "hello"; echo $myvar[1]; // donne "e"
Oui.
Note qu'une autre possibilité, que j'avais envisagée initialement puis annulée (d'où une espace manquante dans la deuxième ligne citée ci-dessus, comme souvent quand on fait une modif à la hâte), ce serait que le problème soit non pas dans $etab_information mais dans $row.
Je l'ai annulée parce que je ne vois pas comment ce code pourrait marcher en PHP4 si $row ou $row[0] est une chaîne. Cela dit, en dehors de ce contexte il faudrait peut-être regarder là aussi.
Je comprends que PHP, bien que non typé, y perde un peu son latin [...]
^^^^^^^^^^^^^^^^^
C'est justement parce que PHP n'est *pas* un langage non type. Il est peut-être faiblement typé, si on veut nommer comme ça le fait qu'il existe tant de transtypages implicites, mais il existe bien huit types distincts dans PHP. Il est même un peu plus typé que le C quand on compte que le type booléen est différent du type integer.
Cordialement, -- Olivier Miakinen
Pascal PONCET
Olivier Miakinen a écrit :
C'est justement parce que PHP n'est *pas* un langage non type. Il est peut-être faiblement typé, si on veut nommer comme ça le fait qu'il existe tant de transtypages implicites, mais il existe bien huit types distincts dans PHP. Il est même un peu plus typé que le C quand on compte que le type booléen est différent du type integer.
Gloups ! Je pensais qu'un langage dit "typé" exigeait une déclaration explicite du type avant utilisation d'une variable. Je me goure ?
Enfin, on pourra toujours dire que c'est un langage à typage faible non explicite, mais c'est plus long ;-) !
@+, Pascal
Olivier Miakinen a écrit :
C'est justement parce que PHP n'est *pas* un langage non type. Il est
peut-être faiblement typé, si on veut nommer comme ça le fait qu'il
existe tant de transtypages implicites, mais il existe bien huit types
distincts dans PHP. Il est même un peu plus typé que le C quand on
compte que le type booléen est différent du type integer.
Gloups !
Je pensais qu'un langage dit "typé" exigeait une déclaration explicite
du type avant utilisation d'une variable.
Je me goure ?
Enfin, on pourra toujours dire que c'est un langage à typage faible non
explicite, mais c'est plus long ;-) !
C'est justement parce que PHP n'est *pas* un langage non type. Il est peut-être faiblement typé, si on veut nommer comme ça le fait qu'il existe tant de transtypages implicites, mais il existe bien huit types distincts dans PHP. Il est même un peu plus typé que le C quand on compte que le type booléen est différent du type integer.
Gloups ! Je pensais qu'un langage dit "typé" exigeait une déclaration explicite du type avant utilisation d'une variable. Je me goure ?
Enfin, on pourra toujours dire que c'est un langage à typage faible non explicite, mais c'est plus long ;-) !
@+, Pascal
CrazyCat
Pascal PONCET wrote:
Je pensais qu'un langage dit "typé" exigeait une déclaration explicite du type avant utilisation d'une variable. Je me goure ?
Oui :) php est un langage typé dynamiquement (le typage dépend de ce que l'on fait de la variable) alors que l'Ada est un langage typé statiquement (on impose le type de la variable). Et certains langages, comme le C++, sont typés statiquement mais accepte le typage dynamique.
Petit lien intéressant: <http://fr.wikipedia.org/wiki/Typage_fort>
-- Réseau IRC Francophone: http://www.zeolia.net Aide et astuces webmasters : http://www.c-p-f.org Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Pascal PONCET wrote:
Je pensais qu'un langage dit "typé" exigeait une déclaration explicite
du type avant utilisation d'une variable.
Je me goure ?
Oui :) php est un langage typé dynamiquement (le typage dépend de ce que
l'on fait de la variable) alors que l'Ada est un langage typé
statiquement (on impose le type de la variable).
Et certains langages, comme le C++, sont typés statiquement mais accepte
le typage dynamique.
Petit lien intéressant: <http://fr.wikipedia.org/wiki/Typage_fort>
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces webmasters : http://www.c-p-f.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Je pensais qu'un langage dit "typé" exigeait une déclaration explicite du type avant utilisation d'une variable. Je me goure ?
Oui :) php est un langage typé dynamiquement (le typage dépend de ce que l'on fait de la variable) alors que l'Ada est un langage typé statiquement (on impose le type de la variable). Et certains langages, comme le C++, sont typés statiquement mais accepte le typage dynamique.
Petit lien intéressant: <http://fr.wikipedia.org/wiki/Typage_fort>
-- Réseau IRC Francophone: http://www.zeolia.net Aide et astuces webmasters : http://www.c-p-f.org Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr