Array to string conversion error

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Han Brouwer Keij

Han Brouwer Keij

02/11/2017 16:18:02
Quote Anchor link
Ik heb in 2014 een site gemaakt die toen goed werkte. Nu wil ik dat aan iemand laten zien en krijg ik ineens de foutmelding zoals in de titel. Het hele script is meer dan 900 regels en de fout komt een aantal keer voor. De fout zit in de vette regel. Het script ziet er als volgt uit:
$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?
 
PHP hulp

PHP hulp

26/11/2024 16:45:24
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/11/2017 17:18:43
Quote Anchor link
Ten eerste waarvoor gebruik je eval() ???

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)
PHP script in nieuw venster Selecteer het PHP script
1
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];
?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo '<pre>'.print_r($waardearr4[$i], true).'</pre>';
echo '<pre>'.print_r(Array3[$i], true).'</pre>';
?>


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
 
Han Brouwer Keij

Han Brouwer Keij

03/11/2017 01:44:06
Quote Anchor link
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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/11/2017 08:34:44
Quote Anchor link
Ik ken het gevoel Han, als of je afgeschoten wordt. Mijn excuses daarvoor maar ik beloof je dat de tips die ik je geef waardevol zijn.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$user
= array(
    'id' => 3,
    'name' => 'Frank',
    'email' => '[email protected]'
);


echo $user['name'];
?>
Gewijzigd op 03/11/2017 08:42:01 door Frank Nietbelangrijk
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.