Array to string conversion error
$correct = 0;//bleef oude waarde behouden. gerepareerd 31-1-2014
eval('$correct =($waardearr4[$i][0] ' . $Array3[$k][0] . $waardearr4[$i][1] . ")" . $Array3[$k][1] . $waardearr4[$i][2] . $Array3[$k][2] . ' $waardearr4[$i][3];');
if ($correct == $getal){
$array_string=" ( . $waardearr4[$i][0] . $Array3[$k][0] . $waardearr4[$i][1] . ) . $Array3[$k][1] . $waardearr4[$i][2] . $Array3[$k][2] . ' $waardearr4[$i][3]";
if (!in_array($array_string, $uitvoer)){//gelijke oplossingen filteren bij gelijke waarden
$uitvoer[] = $array_string;
echo "(" . $waardearr4[$i][0] . $Array3[$k][0] . $waardearr4[$i][1] . ")" . $Array3[$k][1] . $waardearr4[$i][2] . $Array3[$k][2] . $waardearr4[$i][3] . "<br />";
$teller++;
}
}
Hier kun je zien wat er gebeurt.
http://www.boermastreek.nl/han/dobbelstenen.php
Hoe kan ik dit oplossen?
eval() == EVIL
ofwel eval is een zeer gevaarlijke functie die je koste wat het kost moet zien te vermijden.
Volgens mij kun je de bewuste zin ook gewoon zonder eval uitvoeren:
Code (php)
1
2
3
2
3
<?php
$correct = $waardearr4[$i][0] . $Array3[$k][0] . $waardearr4[$i][1] . $Array3[$k][1] . $waardearr4[$i][2] . $Array3[$k][2] . $waardearr4[$i][3];
?>
$correct = $waardearr4[$i][0] . $Array3[$k][0] . $waardearr4[$i][1] . $Array3[$k][1] . $waardearr4[$i][2] . $Array3[$k][2] . $waardearr4[$i][3];
?>
Ten tweede wat betekent $waardearr4[$i] ? niets zeggende namen gebruiken zorgt er voor dat je er zelf ook niet meer uitkomt als er wat aan de hand is zoals nu. Gebruik variabelen namen die wat zeggen. In dit voorbeeld had iets kunnen staan als $resultaat[$i]['username'] of iets dergelijks.
Nu het probleem. Je probeert array waarden aan elkaar te plakken om er een string* van te maken. Echter is 1 of meer van deze waarden geen string maar nog steeds een array. Om er achter te komen hoe je arrays in elkaar steken kun je gebruik maken van de functie print_r(). En als je deze tussen <pre> en </pre> zet dan komt daar een goed leesbaar resultaat uit:
Code (php)
Nog een puntje: Waarom begint Array3 met een hoofdletter? Begin een variabele altijd met een kleine letter en schrijf camelcase, dus:
$ditIsEenVoorbeeld
conclusie:
Je script is een puinhoop en verouderd. Mogelijk geïnfecteerd, en zeer waarschijnlijk niet veilig.
* een string is een reeks karakters bijvoorbeeld "dit is een korte zin." .
Gewijzigd op 02/11/2017 17:20:50 door Frank Nietbelangrijk
Nou, je bent streng en hebt me een heleboel huiswerk gegeven. :-) Ik ben niet zo goed in PHP, ik gebruik meestal C#, maar moest m'n zwager laten zien dat wat hij had bedacht ook digitaal kan. Ik ga in ieder geval een aantal suggesties van je uitproberen.
Als jij ervaring hebt met C# dan zou je misschien ook beter met objecten kunnen gaan werken?
Toevoeging op 03/11/2017 08:39:44:
Een verschil tussen PHP en C is in ieder geval de associatieve array die PHP kent.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$user = array(
'id' => 3,
'name' => 'Frank',
'email' => '[email protected]'
);
echo $user['name'];
?>
$user = array(
'id' => 3,
'name' => 'Frank',
'email' => '[email protected]'
);
echo $user['name'];
?>
Gewijzigd op 03/11/2017 08:42:01 door Frank Nietbelangrijk