Exploiter le premier elt d'un array retourné par une fonction? [PHP] - PHP - Programmation
Marsh Posté le 12-10-2006 à 15:16:38
Parce-que.
(en gros non, tu ne peux pas utiliser directement le résultat d'une fonction, il faut le mettre dans une variable.:o)
Marsh Posté le 12-10-2006 à 21:12:19
Et encore, y'a pas longtemps on pouvait pas faire :
$pouet->bidule->machin->truc(); |
Maintenant on peut
Marsh Posté le 12-10-2006 à 21:22:35
FlorentG a écrit : Et encore, y'a pas longtemps on pouvait pas faire :
|
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 ?
Marsh Posté le 12-10-2006 à 21:52:49
gatsu35 a écrit : peut etre parce que . est déjà utilisé pour la concaténation de chaînes ? |
Jamais compris pourquoi c'était pas +
Marsh Posté le 12-10-2006 à 22:03:17
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)
Marsh Posté le 13-10-2006 à 00:40:53
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
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 ?
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
Marsh Posté le 13-10-2006 à 00:48:15
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 |
Quand le langage est fortement typé ya aucun problème nulle part
Python:
Code :
|
Ruby
Code :
|
Haskell/GHCi
Code :
|
Erlang
Code :
|
Common Lisp / clisp
Code :
|
Scheme / Petite Chez Scheme
Code :
|
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
Marsh Posté le 13-10-2006 à 08:21:17
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
Marsh Posté le 13-10-2006 à 12:14:44
masklinn a écrit : Ruby
|
Ah ouais ok En voilà quelque chose de bien
Marsh Posté le 13-10-2006 à 12:16:50
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 |
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 . 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
Marsh Posté le 13-10-2006 à 12:18:38
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 |
moi j'aurais plutôt dit que c'était "hérité" de perl
Marsh Posté le 13-10-2006 à 12:19:25
FlorentG a écrit : Ah ouais ok En voilà quelque chose de bien |
J'vois pas ce que tu veux d'autre qu'une TypeError dans ce genre de cas hein
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
Marsh Posté le 13-10-2006 à 12:21:14
masklinn a écrit : J'vois pas ce que tu veux d'autre qu'une TypeError dans ce genre de cas hein |
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
Marsh Posté le 13-10-2006 à 12:25:43
masklinn a écrit : C'est censé être étonnant de leur part ça |
Selon les premières meeting notes, la discussion a fini sur :
Citation : The suggested separator is "\" as this is the only free choice. |
Marsh Posté le 13-10-2006 à 12:26:39
FlorentG a écrit : Selon les premières meeting notes, la discussion a fini sur :
|
yeah, je sens venir les trucs marrants...
Marsh Posté le 13-10-2006 à 12:27:03
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. |
Code :
|
Marsh Posté le 13-10-2006 à 12:35:09
Small test :
<?php |
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 |
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
Marsh Posté le 13-10-2006 à 12:44:47
FlorentG a écrit : Selon les premières meeting notes, la discussion a fini sur :
|
FlorentG a écrit : Small test :
|
Small test:
Code :
|
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
Marsh Posté le 13-10-2006 à 12:46:42
FlorentG a écrit : Small test :
|
'tain mais vive php, quoi!
Marsh Posté le 13-10-2006 à 12:50:28
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 |
Clairement. Si y'avait moyen sous PHP d'éviter l'automatisation à outrance
Marsh Posté le 13-10-2006 à 12:52:02
FlorentG a écrit : Clairement. Si y'avait moyen sous PHP d'éviter l'automatisation à outrance |
ajouter la notion de types de données?
Marsh Posté le 13-10-2006 à 12:59:24
skeye a écrit : ajouter la notion de types de données? |
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
Marsh Posté le 13-10-2006 à 13:10:55
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
Leurs références permanentes à "PHP's KISS principle" me font exploser de rire, aussi
Marsh Posté le 13-10-2006 à 13:13:51
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 |
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.
Marsh Posté le 12-10-2006 à 15:09:40
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;