Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1030 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Exploiter le premier elt d'un array retourné par une fonction?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Exploiter le premier elt d'un array retourné par une fonction?

n°1456115
Yoyo@
Posté le 12-10-2006 à 15:09:40  profilanswer
 

Salut,
 
Je viens de tomber sur un os en PHP, et une opération qui m'aurait semblé totalement légale dans un autre langage me retourne un parse error.
 
En fait, je vpoulais savoir s'il était possible d'extraire la première valeur d'un table retoruné par une fonction sans passer par un tableau intermédiaire...
 
Un exemple valant mieux qu'un long discours...:
 

print array_keys($tabledata)[0];


 
Pourquoi l'exemple précédent ne fonctionne t il pas? J'ai beau essayer d'isoler le retour de ma fonction avec des parenthèses, ça ne fonctionne toujours pas... Suis je obligé de passer par un tableau temporaire?
 
Ou alors par un truc dugenre:
 

list($val) = array_keys($tabledata);
print $val;

mood
Publicité
Posté le 12-10-2006 à 15:09:40  profilanswer
 

n°1456120
skeye
Posté le 12-10-2006 à 15:16:38  profilanswer
 

Parce-que.[:dawao]
 
(en gros non, tu ne peux pas utiliser directement le résultat d'une fonction, il faut le mettre dans une variable.:o)


---------------
Can't buy what I want because it's free -
n°1456157
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-10-2006 à 15:54:59  profilanswer
 

Code :
  1. print array_shift(array_keys($table));


n°1456396
FlorentG
Posté le 12-10-2006 à 21:12:19  profilanswer
 

Et encore, y'a pas longtemps on pouvait pas faire :

$pouet->bidule->machin->truc();


Maintenant on peut [:dawa]

n°1456403
gatsu35
Blablaté par Harko
Posté le 12-10-2006 à 21:22:35  profilanswer
 

FlorentG a écrit :

Et encore, y'a pas longtemps on pouvait pas faire :

$pouet->bidule->machin->truc();


Maintenant on peut [:dawa]


PHP sa simplicité en a fait sa popularité, mais aussi un langage tout pourri
Défaut simple, ya pas vraiment de terme d'objet
pour une string tu peux pas faire :  
$mastring->methodedelobjet() :(
tu doit faire :  
fonctionsurlastring($lastring); :(
 
au fait pourquoi en PHP c'est -> et pas . ?
peut etre parce que . est déjà utilisé pour la concaténation de chaînes ?

Message cité 2 fois
Message édité par gatsu35 le 12-10-2006 à 21:24:08
n°1456407
gooopil
pfiew
Posté le 12-10-2006 à 21:52:49  profilanswer
 

gatsu35 a écrit :

peut etre parce que . est déjà utilisé pour la concaténation de chaînes ?


Jamais compris pourquoi c'était pas + :/

n°1456408
masklinn
í dag viðrar vel til loftárása
Posté le 12-10-2006 à 22:03:17  profilanswer
 

gatsu35 a écrit :

peut etre parce que . est déjà utilisé pour la concaténation de chaînes ?


En même temps ça n'a pas grande importance, ce n'est qu'une convention ça, et tous les langages ne l'utilisent pas (Smalltalk utilise un simple espace pour signifier l'envoi d'un message à un objet)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1456449
FlorentG
Posté le 13-10-2006 à 00:40:53  profilanswer
 

gooopil a écrit :

Jamais compris pourquoi c'était pas + :/


Je peux pas blairer les langage où c'est '+', parce que dès que tu fous une addition dedans c'est le bordel [:dawak]
 
Genre JS :

var pouet = 'tagada ' + 2 + 3;


HAHA WHAT'S GOING ON
tagada 23 ? tagada 5 ? Quel est le plus logique ? Rajouter des parenthèses pour forcer l'addition, et rajouter plein de caractère qui font chier en même temps ? [:dawak]
Je préfère :

$pouet = 'tagada ' . 2 + 3;


ou

Dim Pouet As Integer = 'tagada ' & 2 + 3


 
Bon ok, c'est minime... Maintenant j'aime bien quand on mélange pas les choses, mieux vaut laisser les opérateurs mathématiques pour les maths

Message cité 2 fois
Message édité par FlorentG le 13-10-2006 à 00:41:12
n°1456454
masklinn
í dag viðrar vel til loftárása
Posté le 13-10-2006 à 00:48:15  profilanswer
 

FlorentG a écrit :

Je peux pas blairer les langage où c'est '+', parce que dès que tu fous une addition dedans c'est le bordel [:dawak]


Quand le langage est fortement typé ya aucun problème nulle part [:dawa]
 
Python:

Code :
  1. >>> "tagada" + 2 + 3
  2.  
  3. Traceback (most recent call last):
  4.  File "<pyshell#0>", line 1, in -toplevel-
  5.    "tagada" + 2 + 3
  6. TypeError: cannot concatenate 'str' and 'int' objects
  7. >>>


Ruby

Code :
  1. >> 'tagada' + 2 + 3
  2. TypeError: can't convert Fixnum into String
  3.        from (irb):1:in `+'
  4.        from (irb):1


Haskell/GHCi

Code :
  1. Prelude> "tagada" + 2 + 3
  2. <interactive>:1:13:
  3.    No instance for (Num [Char])
  4.      arising from use of `+' at <interactive>:1:13
  5.    Probable fix: add an instance declaration for (Num [Char])
  6.    In the definition of `it': it = ("tagada" + 2) + 3


Erlang

Code :
  1. 3> "tagada" + 2 + 3.
  2. =ERROR REPORT==== 13-Oct-2006::01:04:06 ===
  3. Error in process <0.34.0> with exit value: {badarith,[{erl_eval,eval_op,3},{erl_
  4. eval,expr,5},{shell,exprs,6},{shell,eval_loop,3}]}
  5. ** exited: {badarith,[{erl_eval,eval_op,3},
  6.                      {erl_eval,expr,5},
  7.                      {shell,exprs,6},
  8.                      {shell,eval_loop,3}]} **


Common Lisp / clisp

Code :
  1. [3] (+ "tralala" 2 3)
  2.  
  3. *** - +: "tralala" is not a number
  4. The following restarts are available:
  5. USE-VALUE      :R1      You may input a value to be used instead.
  6. ABORT          :R2      ABORT


Scheme / Petite Chez Scheme

Code :
  1. - (+ "tralala" 2 3)
  2.  
  3. [Repl(15)] Error in +: "tralala" is not a number.
  4. Type (debug) to enter the debugger.


 
Tu veux jouer avec des langages de merde, c'est ton problème hein, c'est pas comme s'il n'y avait pas d'alternatives [:dawa]

Message cité 2 fois
Message édité par masklinn le 13-10-2006 à 00:55:02
n°1456474
gooopil
pfiew
Posté le 13-10-2006 à 08:21:17  profilanswer
 


 


 
Si je résume : le choix de . dans php pour la concaténation est logique, pour éviter des confusions, à cause de la confusion de php lui même au niveau du typage...Chais chuper php  
[:al_bubu]

Message cité 2 fois
Message édité par gooopil le 13-10-2006 à 08:21:34
mood
Publicité
Posté le 13-10-2006 à 08:21:17  profilanswer
 

n°1456668
FlorentG
Posté le 13-10-2006 à 12:14:44  profilanswer
 

masklinn a écrit :

Ruby

Code :
  1. >> 'tagada' + 2 + 3
  2. TypeError: can't convert Fixnum into String
  3.        from (irb):1:in `+'
  4.        from (irb):1




Ah ouais ok [:dawak] En voilà quelque chose de bien

n°1456672
FlorentG
Posté le 13-10-2006 à 12:16:50  profilanswer
 

gooopil a écrit :

Si je résume : le choix de . dans php pour la concaténation est logique, pour éviter des confusions, à cause de la confusion de php lui même au niveau du typage...Chais chuper php  
[:al_bubu]


Je dirais plutôt que comme + est déjà utilisé, il ont pris .
 
Quand tu vois les discussions sur l'implémentation des namespaces dans PHP6, ils cherchaient un symbole pour séparer les trucs. Alors normalement c'est du genre system.machin.truc, sauf qu'ils pouvaient pas faire comme ça parce que . est l'opérateur de concaténation [:dawa]. Ils pensaient aussi utiliser ::, mais pas de bol c'est pour appeller une fonction statique sur un objet. Bref, je sais pas ce qu'ils foutent, mais on dirait qu'écrire un parser qui sait différencier un opérateur suivant le contexte est au-dessus de leur moyen

n°1456677
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-10-2006 à 12:18:38  profilanswer
 

gooopil a écrit :

Si je résume : le choix de . dans php pour la concaténation est logique, pour éviter des confusions, à cause de la confusion de php lui même au niveau du typage...Chais chuper php  
[:al_bubu]


moi j'aurais plutôt dit que c'était "hérité" de perl

n°1456679
masklinn
í dag viðrar vel til loftárása
Posté le 13-10-2006 à 12:19:25  profilanswer
 

FlorentG a écrit :

Ah ouais ok [:dawak] En voilà quelque chose de bien


J'vois pas ce que tu veux d'autre qu'une TypeError dans ce genre de cas hein [:dawa]

FlorentG a écrit :

on dirait qu'écrire un parser qui sait différencier un opérateur suivant le contexte est au-dessus de leur moyen


C'est censé être étonnant de leur part ça [:petrus dei]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1456682
FlorentG
Posté le 13-10-2006 à 12:21:14  profilanswer
 

masklinn a écrit :

J'vois pas ce que tu veux d'autre qu'une TypeError dans ce genre de cas hein [:dawa]


Do it the PHP way, convertit en string et tente quelque chose de manière à ce que le n00b de base ait le résultat voulu.
 
 
Nan y'a mieux, convertit la string en 0, et fait l'addition [:dawa]

n°1456688
FlorentG
Posté le 13-10-2006 à 12:25:43  profilanswer
 

masklinn a écrit :

C'est censé être étonnant de leur part ça [:petrus dei]


Selon les premières meeting notes, la discussion a fini sur :

Citation :

The suggested separator is "\" as this is the only free choice.


 [:johneh]

n°1456691
skeye
Posté le 13-10-2006 à 12:26:39  profilanswer
 

FlorentG a écrit :

Selon les premières meeting notes, la discussion a fini sur :

Citation :

The suggested separator is "\" as this is the only free choice.


 [:johneh]


yeah, je sens venir les trucs marrants...[:dawa]


---------------
Can't buy what I want because it's free -
n°1456692
masklinn
í dag viðrar vel til loftárása
Posté le 13-10-2006 à 12:27:03  profilanswer
 

FlorentG a écrit :

Do it the PHP way, convertit en string et tente quelque chose de manière à ce que le n00b de base ait le résultat voulu.
 
 
Nan y'a mieux, convertit la string en 0, et fait l'addition [:dawa]


Code :
  1. >> "tagada #{2+3}"
  2. => "tagada 5"


[:dawak]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1456699
FlorentG
Posté le 13-10-2006 à 12:35:09  profilanswer
 

Small test :

<?php
 
$str = 'machin ' . 2 + 3;
echo $str;


Affiche '3'.... Il concatène machin et 2. Puis pour additionner il convertit la première en 0, et ajoute 3. Faut mettre logiquement des parenthèses
 
si maintenant on a ça :

<?php
 
$str = '1 machin ' . 2 + 3;
echo $str;


Ca retourne '4'. De nouveau concaténation, puis pour l'addition, il convertit en 1 (en fait il stop au premier caractère non-numérique pour la conversion en int).
 
 
Faut juste le savoir [:dawak]

n°1456703
masklinn
í dag viðrar vel til loftárása
Posté le 13-10-2006 à 12:44:47  profilanswer
 

FlorentG a écrit :

Selon les premières meeting notes, la discussion a fini sur :

Citation :

The suggested separator is "\" as this is the only free choice.


 [:johneh]


[:rofl]

FlorentG a écrit :

Small test :

<?php
 
$str = 'machin ' . 2 + 3;
echo $str;


Affiche '3'.... Il concatène machin et 2. Puis pour additionner il convertit la première en 0, et ajoute 3. Faut mettre logiquement des parenthèses
 
si maintenant on a ça :

<?php
 
$str = '1 machin ' . 2 + 3;
echo $str;


Ca retourne '4'. De nouveau concaténation, puis pour l'addition, il convertit en 1 (en fait il stop au premier caractère non-numérique pour la conversion en int).
 
 
Faut juste le savoir [:dawak]


Small test:

Code :
  1. >>> 'machin' + 2 + 3
  2.  
  3. Traceback (most recent call last):
  4.  File "<pyshell#0>", line 1, in -toplevel-
  5.    'machin' + 2 + 3
  6. TypeError: cannot concatenate 'str' and 'int' objects
  7. >>> '1 machin' + 2 + 3
  8.  
  9. Traceback (most recent call last):
  10.  File "<pyshell#1>", line 1, in -toplevel-
  11.    '1 machin' + 2 + 3
  12. TypeError: cannot concatenate 'str' and 'int' objects
  13. >>> int("machin" ) + 2 + 3
  14.  
  15. Traceback (most recent call last):
  16.  File "<pyshell#2>", line 1, in -toplevel-
  17.    int("machin" ) + 2 + 3
  18. ValueError: invalid literal for int(): machin
  19. >>> int("1 machin" ) + 2 + 3
  20.  
  21. Traceback (most recent call last):
  22.  File "<pyshell#3>", line 1, in -toplevel-
  23.    int("1 machin" ) + 2 + 3
  24. ValueError: invalid literal for int(): 1 machin
  25. >>> "machin" + str(2+3)
  26. 'machin5'
  27. >>> "1 machin" + str(2+3)
  28. '1 machin5'


C'est cohérent, tu peux pas faire de connerie, ça essaie de faire exactement ce que tu demandes et pas autre chose, pas besoin de devoir se souvenir de règles stupides [:dawak]

Message cité 1 fois
Message édité par masklinn le 13-10-2006 à 12:45:05

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1456704
skeye
Posté le 13-10-2006 à 12:46:42  profilanswer
 

FlorentG a écrit :

Small test :

<?php
 
$str = 'machin ' . 2 + 3;
echo $str;


Affiche '3'.... Il concatène machin et 2. Puis pour additionner il convertit la première en 0, et ajoute 3. Faut mettre logiquement des parenthèses
 
si maintenant on a ça :

<?php
 
$str = '1 machin ' . 2 + 3;
echo $str;


Ca retourne '4'. De nouveau concaténation, puis pour l'addition, il convertit en 1 (en fait il stop au premier caractère non-numérique pour la conversion en int).
 
 
Faut juste le savoir [:dawak]


 
'tain mais vive php, quoi! [:marc]


---------------
Can't buy what I want because it's free -
n°1456707
FlorentG
Posté le 13-10-2006 à 12:50:28  profilanswer
 

masklinn a écrit :

C'est cohérent, tu peux pas faire de connerie, ça essaie de faire exactement ce que tu demandes et pas autre chose, pas besoin de devoir se souvenir de règles stupides [:dawak]


Clairement. Si y'avait moyen sous PHP d'éviter l'automatisation à outrance

n°1456708
skeye
Posté le 13-10-2006 à 12:52:02  profilanswer
 

FlorentG a écrit :

Clairement. Si y'avait moyen sous PHP d'éviter l'automatisation à outrance


ajouter la notion de types de données?[:joce]


---------------
Can't buy what I want because it's free -
n°1456713
FlorentG
Posté le 13-10-2006 à 12:59:24  profilanswer
 

skeye a écrit :

ajouter la notion de types de données?[:joce]


Ca commence à venir tout tout doucement. Déjà dans les fonctions, tu peux forcer le type d'un paramètre (mais seulement un objet ou un Array, pas de type de base genre int ou string). Ensuite il est question aussi pour PHP6 de permettre de forcer le type de retour... Ca vient, ça vient

n°1456729
masklinn
í dag viðrar vel til loftárása
Posté le 13-10-2006 à 13:10:55  profilanswer
 

FlorentG a écrit :

Ca commence à venir tout tout doucement. Déjà dans les fonctions, tu peux forcer le type d'un paramètre (mais seulement un objet ou un Array, pas de type de base genre int ou string). Ensuite il est question aussi pour PHP6 de permettre de forcer le type de retour... Ca vient, ça vient


Ouais enfin je viens de lire les dernières devnotes, et PHP va continuer à être une grosse blague, je vois vraiment pas l'intérêt de continuer à l'utiliser [:pingouino]
 
Leurs références permanentes à "PHP's KISS principle" me font exploser de rire, aussi [:dawa]

Message cité 1 fois
Message édité par masklinn le 13-10-2006 à 13:11:29

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1456734
FlorentG
Posté le 13-10-2006 à 13:13:51  profilanswer
 

masklinn a écrit :

Ouais enfin je viens de lire les dernières devnotes, et PHP va continuer à être une grosse blague, je vois vraiment pas l'intérêt de continuer à l'utiliser [:pingouino]


Gratos et proposé partout. J'ai commencé le dev web avec ça, tous nos premiers hébergements en mutualisé (OVH) ne proposaient que PHP...
 
OVH commence à tester RoR, et devrait le proposer à terme. Maintenant on a un dédié, je pourrait le foutre dessus, mais ça veut dire tout recommencer, se reformer et tout. Donc pas avant quelques temps...
 
Pour l'instant sous PHP5 ça va encore, y'a moyen de faire quelque chose, à condition de bien faire gaffe. Grâce aux tests unitaires les erreurs de bases sont évitées, et j'arrive à m'en tirer sans que PHP soit trop pénalisant et limitant.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Exploiter le premier elt d'un array retourné par une fonction?

 

Sujets relatifs
Contenu html en fonction du browser[HTLM][PHP] Entete de tableau à 45 °
PHP : Fonction mail() bloque ma pageExo nombre premier
[PHP]Cmt faire un post traitement?(après envoi de la page au client)phpBB, fonction mail et OVH
[RESOLU] tab multidimensionel en paramètre d'une fonctionExporter formulaire HTML en CSV pour Excel sans PHP
[.NET] StreamReader, position dans un fichier, fonction peek et seek 
Plus de sujets relatifs à : [PHP] Exploiter le premier elt d'un array retourné par une fonction?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR