Error bij uitlezen array 'undefined constant'

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bryan De Baar

Bryan De Baar

19/04/2019 23:48:50
Quote Anchor link
Deze array krijg ik uit de print_r

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$theresults
= array (
    [
0] => stdClass Object (
        [
id] => 1
        [fruit] => Apple
        [price] => 10
        [total] => 7
    )
    
    [
1] => stdClass Object (
        [
id] => 2
        [fruit] => Orange
        [price] => 15
        [total] => 23
    )
)


foreach ($theresults as $fruit => $values) {
  foreach ($values as $value) {
    echo $value;
  }
}

?>


Output = 1Apple1072Orange1523

Nu komt alles achter elkaar maar wil deze array uitlezen als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $value[fruit].' - '.$value[price].' - '.$value[total];
?>


Maar krijg een error 'Use of undefined constant fruit'.
 
PHP hulp

PHP hulp

18/07/2019 01:27:32
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/04/2019 00:27:08
Quote Anchor link
Je bent er bijna ...

De buitenste array is een gewone numerieke array met fruit "objecten". Hiervoor gebruik je een foreach waarmee je deze één voor één behandeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach ($theresults as $fruit) { // loop door alle fruit "objecten"
    echo $fruit['fruit'] . ' = ' . $fruit['price'] . '<br>'; // gebruik de fruit objecten één voor één
}
?>

(Het zijn niet echt objecten maar het zijn eigenlijk associatieve arrays).
Gewijzigd op 20/04/2019 00:30:04 door Frank Nietbelangrijk
 
Thomas van den Heuvel

Thomas van den Heuvel

20/04/2019 00:31:32
Quote Anchor link
Waar komt dit array vandaan?

Vermoeden: je gebruikt json_encode() zonder een tweede parameter met waarde true? Dit laatste zorgt er namelijk voor dat je een (volledig) associatief array terugkrijgt, en niet een array van objecten.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/04/2019 00:38:01
Quote Anchor link
oh.. inderdaad zoals Thomas zegt gebruik makkelijker

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$result
= json_encode($json, true);

?>


Dan zal mijn voorbeeld tevens werken. Zonder die true zijn het wel echte objecten (standaard php objecten) en dan moet je met een pointer operator -> gaan werken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach ($theresults as $fruit) { // loop door alle fruit "objecten"
    echo $fruit->fruit . ' = ' . $fruit->price . '<br>'; // gebruik de fruit objecten één voor één
}
?>
Gewijzigd op 20/04/2019 00:39:47 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.