Heel simpel: ik heb een formulier met waardes, en in m'n post krijg ik een array en wil controleren of er wel iets is ingevuld. Daarvoor wilde ik array_sum gaan gebruiken. Het vervelende is alleen dat die van niet ingevulde waarden een 0 maakt.
van PHP.net:
IK dacht dit op te lossen door de array die ik wil controleren eerst in een andere variabele to gooien en dan die te controleren. Maar het gekke is, dan maakt ie van m'n post-array nog steeds nullen???
hier is een stukje code waarmee jullie het eventueel zelf kunnen testen:
met deze regel:
echo "<pre>\n";print_r($_POST['array']);echo "</pre>\n";
print ik dus twee keer die array uit, de eerste keer is ie gewoon leeg als je nix invult, de tweede keer staan er overal nullen.
Doe ik nou gewoon iets stoms? Of is de bug nog veel groter dan op php.net staat?
p.s. welke andere functie zou ik kunnen gebruiken? (ipv met een foreach alle variabelen in m'n array checken).
van PHP.net:
Zoals daar onder al wordt opgemerkt zit die bug er in 4.1.2 nog steeds in (gebruik ik zelf).Note: PHP versions prior to 4.0.6 modified the passed array itself and converted strings to numbers (which most of the time converted them to zero, depending on their value).
IK dacht dit op te lossen door de array die ik wil controleren eerst in een andere variabele to gooien en dan die te controleren. Maar het gekke is, dan maakt ie van m'n post-array nog steeds nullen???
hier is een stukje code waarmee jullie het eventueel zelf kunnen testen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| <?php if ($_POST['mode'] == "sent") { echo "<pre>\n";print_r($_POST['array']);echo "</pre>\n"; $check_array = $_POST['array']; if (array_sum($check_array) > 0) { $top_message = "form processed"; unset ($_POST); } else { $top_message = "<font color=\"#FF0000\">You forgot to fill in at least one value</font>\n"; } echo "<pre>\n";print_r($_POST['array']);echo "</pre>\n"; } ?> <html> <head> <script language="javascript"> // </script> </head> <body> <center> <br> <?php if ($top_message) echo $top_message; ?> <form action="<?php echo $PHP_SELF; ?>" method="post" name="Frm"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td align="left" valign="top"> 0 </td> <td align="left" valign="top"> <input type="text" name="array[0]" value="<?php echo $_POST['array'][0]; ?>" </td> </tr> <tr> <td align="left" valign="top"> 1 </td> <td align="left" valign="top"> <input type="text" name="array[1]" value="<?php echo $_POST['array'][1]; ?>" </td> </tr> <tr> <td align="left" valign="top"> 2 </td> <td align="left" valign="top"> <input type="text" name="array[2]" value="<?php echo $_POST['array'][2]; ?>" </td> </tr> <tr> <td align="center" colspan="2" bgcolor="#CACACA"> <input type="submit" value="Submit"> </td> </tr> </table> <input type="hidden" name="mode" value="sent"> </form> |
met deze regel:
echo "<pre>\n";print_r($_POST['array']);echo "</pre>\n";
print ik dus twee keer die array uit, de eerste keer is ie gewoon leeg als je nix invult, de tweede keer staan er overal nullen.
Doe ik nou gewoon iets stoms? Of is de bug nog veel groter dan op php.net staat?
p.s. welke andere functie zou ik kunnen gebruiken? (ipv met een foreach alle variabelen in m'n array checken).
[ Voor 24% gewijzigd door marty op 20-12-2002 10:30 ]