Warning PHP 8.3 sur une boucle `(DATA){enum 0,5}`
Warning: range(): Argument #1 ($start) must not be empty, casted to 0 in ~/ecrire/src/Compilateur/Iterateur/Data.php on line 348
-
$this->command['enum']
vaut alors
array:2 [▼
0 => ""
1 => "5"
]
-
Notons que 0 arrive en chaîne vide donc
""
; ce qui ne plait pas à range(). -
Qu’on ne peut pas vraiment automatiquement "caster" en int car on peut envoyer
{enum a,z}
-
ou supposer que si c’est une chaine vide, alors on cast en int.
-
ou trouver pourquoi le zéro n’arrive pas jusque là et corriger.
Dans critere_DATA_enum_dist()
On peut noter que avec {enum 0,5}
, $crit->param
vaut :
array:2 [▼
0 => []
1 => array:1 [▼
0 => Spip\Compilateur\Noeud\Texte {#113 ▼
+type: "texte"
+texte: "5"
+avant: ""
+apres: ""
+ligne: 0
}
]
]
Alors que pour {enum 1,5}
c’est
array:2 [▼
0 => array:1 [▼
0 => Spip\Compilateur\Noeud\Texte {#110 ▼
+type: "texte"
+texte: "1"
+avant: ""
+apres: ""
+ligne: 0
}
]
1 => array:1 [▼
0 => Spip\Compilateur\Noeud\Texte {#113 ▼
+type: "texte"
+texte: "5"
+avant: ""
+apres: ""
+ligne: 0
}
]
]
Ou encore {enum "0","5"}
donne un cas correct
array:2 [▼
0 => array:1 [▼
0 => Spip\Compilateur\Noeud\Texte {#113 ▼
+type: "texte"
+texte: "0"
+avant: ""
+apres: ""
+ligne: 0
}
]
1 => array:1 [▼
0 => Spip\Compilateur\Noeud\Texte {#110 ▼
+type: "texte"
+texte: "5"
+avant: """
+apres: """
+ligne: 0
}
]
]
Bref, le caractère 0
disparait dans {enum 0,5}
et ce avant même de traiter le critère