Functie gebruiken in array ??

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Goeny Goegoe

Goeny Goegoe

13/10/2014 16:23:24
Quote Anchor link
Is het op een of andere manier mogelijk om een functie te gebruiken in een array?

Bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$array
= [ 'item1' => ['item1a' => 'foo', 'item1b' => functie(), 'item1c' => andere-functie()],
[
'item2a' => 'bar', 'item2b' => functie(), 'item2c' => andere-functie()]
];

?>
 
PHP hulp

PHP hulp

27/12/2024 14:38:17
 
Frank Nietbelangrijk

Frank Nietbelangrijk

13/10/2014 16:31:48
Quote Anchor link
Nee. Maar je kunt wel namen van functies opslaan en deze dan middels call_user_func() de functie die je wilt doen aanroepen.

Pas wel op bij publieke sites kan dit een ernstig beveiligingslek geven.
 
Willem vp

Willem vp

13/10/2014 23:00:29
Quote Anchor link
Kan gewoon:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
function bar ()
{

   return "baz";
}


$a = [ 'foo' => bar() ];

print_r($a);

?>

Geeft als output:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Array
(
    [foo] => baz
)


Of zelfs:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
function bar ()
{

   return [ 'bar' => 'baz' ];
}


$a = [ 'foo' => bar() ];

print_r($a);

?>

geeft:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
Array
(
    [foo] => Array
        (
            [bar] => baz
        )

)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

14/10/2014 00:07:14
Quote Anchor link
Hmmm Achteraf ook wel logisch. Ik wist dat het middels een variabele kon.
 
Willem vp

Willem vp

14/10/2014 00:39:55
Quote Anchor link
Overigens kun je dit ook doen met array keys:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$a
= [ foo() => 'bar' ]
?>

De documentatie van PHP zegt overigens niet heel erg expliciet dat het kan (althans, ik heb het niet kunnen vinden) maar hier en daar vind je wel voorbeelden waarin iets staat als "$array=array(foo=>array())".

[Overigens is dat een slecht voorbeeld van mij, want array() is geen functie...]
Gewijzigd op 14/10/2014 00:42:52 door Willem vp
 
Goeny Goegoe

Goeny Goegoe

14/10/2014 08:06:38
Quote Anchor link
Ik zal er weer eens in duiken.
Zoals het eerste voorbeeld van Willem vp heb ik het geprobeerd. Maar dan krijg ik helemaal geen output. Zelfs met error reporting aan doet het helemaal niks meer. Krijg dan zo'n mooi wit scherm. :)
 
Willem vp

Willem vp

14/10/2014 09:05:09
Quote Anchor link
Staat er wel een foutmelding in de Apache errorlog? (ik neem even aan dat je Apache gebruikt ;-) )

Welke PHP-versie gebruik je? Ik weet niet of je de verkorte notatie om een array aan te maken met [ ] vaker gebruikt, maar die werkt pas vanaf PHP 5.4. Met oudere PHP-versies krijg je dan een parse error, en dat geeft dan zo'n mooi wit scherm. In de errorlog zou dan in ieder geval wel een foutmelding moeten staan.
 



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.