OVH Cloud OVH Cloud

PHP 4.1.2 -> 4.3.10

17 réponses
Avatar
Etienne SOBOLE
Je viens de passer de la version
4.1.2 a la version 4.3.10 et ca merdouille un peu partout.
parmi les choses incompréhensibles :
- le fread qui n'accepte plus de lire 0 octet. Ce qui veut dire que le code
suivant:
$file = '/tmp/file.txt';

if (file_exists($file))
{
$fp = fopen($file, 'r');
$buf = fread($fp, filesize($file);
fclose($fp);
}

n'est plus valide, puisque si le fichier existe mais ne contrient aucun
caractère, et bien ca plante...
Autant dire que j'ai utilisé ce code au moins 1000 fois... donc, et bien
c'est pas cool.

Ils sont un peu a coté de la plaque sur ce coup la je pense...

Etienne

7 réponses

1 2
Avatar
Etienne SOBOLE
comment ? plait-il ?


Hum...
pour etre franc dans la panique, j'ai pas chercher a comprendre, j'ai
remplacé dare dare
tous les

foreach($tableau AS $value)

par

foreach($tableau AS $xxx => $value)

ou $xxx ne me sert a rien.
J'avoue qu'a la lecture de la doc, ca semble ne pas servir a grand chose ce
que j'ai fait. j'irai donc verifier... ce qui se passait avant et ce qui se
passe maintenant...

Je te tiens au courrant rapidement...
Etienne

Avatar
Michel BONZI
comment ? plait-il ?



Hum...
pour etre franc dans la panique, j'ai pas chercher a comprendre, j'ai
remplacé dare dare
tous les

foreach($tableau AS $value)

par

foreach($tableau AS $xxx => $value)

ou $xxx ne me sert a rien.
J'avoue qu'a la lecture de la doc, ca semble ne pas servir a grand chose ce
que j'ai fait. j'irai donc verifier... ce qui se passait avant et ce qui se
passe maintenant...

Je te tiens au courrant rapidement...
Etienne
Bonjour,

Il semble effectivement que dans la syntaxe
foreach($tableau as $value) $value retourne un tableau de 2 valeurs
$value[0] est la clef, $value[1] la valeur.
Il faut donc modifier :
foreach($tableau as list($clef,$valeur))
ou
foreach($tableau as $clef=>$valeur)
pour obtenir le comportement d'avant 4.3.10.
Salutations
Michel BONZI


Avatar
Etienne SOBOLE
Il semble effectivement que dans la syntaxe
foreach($tableau as $value) $value retourne un tableau de 2 valeurs
$value[0] est la clef, $value[1] la valeur.
Il faut donc modifier :
foreach($tableau as list($clef,$valeur))
ou
foreach($tableau as $clef=>$valeur)
pour obtenir le comportement d'avant 4.3.10.


Ah ben merci.
je ne suis pas fou ;)

C'est plutot les gens qui font le PHP qui sont grave sur ce coup là...
Il serait quand meme judicieux qu'ils fasse marche arrière rapiement avec le
version 4.3.11, parce que tout de meme se sont d'importantes modifications,
qui disons le encore une fois, ne sont justifiée en rien...

Etienne

Avatar
loufoque
Michel BONZI a dit le 18/01/2005 00:13:

Il semble effectivement que dans la syntaxe
foreach($tableau as $value) $value retourne un tableau de 2 valeurs
$value[0] est la clef, $value[1] la valeur.


Je n'ai pas PHP 4.3.10 mais si ce comportement est réel, il s'agit d'un bug.
De toutes façons, PHP 4.3.10 est totalement buggué de partout... (il y a
des problèmes avec les objets aussi)

Avatar
Spot
Etienne SOBOLE disait le 14/01/2005 18:40:
foreach($tableau AS $res)
a aussi disparu semble t-il. mais la ca doit dater d'une beaucoup plus
ancienne version du PHP.

Etienne


Salut,

euh, voir le test suivant, mais je n'ai noté aucune modification du
comportement de foreach sur php 4.3.10

A ++

-------------------
$php -v
PHP 4.3.10 (cli) (built: Dec 21 2004 13:01:29)
-------------------

<?php

$test = array(1,2,3,4);
foreach($test as $v)
{
var_dump($v) . "n";
}
?>

----------------------------
$php testforeach.php
int(1)
int(2)
int(3)
int(4)

Avatar
Michel BONZI
Michel BONZI a dit le 18/01/2005 00:13:

Il semble effectivement que dans la syntaxe
foreach($tableau as $value) $value retourne un tableau de 2 valeurs
$value[0] est la clef, $value[1] la valeur.



Je n'ai pas PHP 4.3.10 mais si ce comportement est réel, il s'agit d'un
bug.
De toutes façons, PHP 4.3.10 est totalement buggué de partout... (il y a
des problèmes avec les objets aussi)
Bonjour,

Pour finir je suis revenu en 4.3.9 :-(
Salutations.

--
Michel BONZI


Avatar
__marc.quinton__
Michel BONZI wrote:

Il semble effectivement que dans la syntaxe
foreach($tableau as $value) $value retourne un tableau de 2 valeurs
$value[0] est la clef, $value[1] la valeur.
Il faut donc modifier :
foreach($tableau as list($clef,$valeur))
ou
foreach($tableau as $clef=>$valeur)
pour obtenir le comportement d'avant 4.3.10.



je viens de faire un essai, ca passe pas, enfin tout reste comme avant :

<?php

$list = array(
array( 'key' => 1, val => '123'),
array( 'key' => 2, val => '456'),
array( 'key' => 3, val => '789')
);


foreach ($list as $record){
print_r($record);
}

# non valide
# foreach ($list as list($key, $val)){
# echo "$key , $valn";
# }

?>

1 2