[php] &Reference aan functie doorgeven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Ik heb de volgende code:
PHP:
1
2
3
4
5
$oLijst = new oLijst();
$aoData = Array();

$aoData[] = new oData();
$oLijst->fAdd(&$aoData[count($aoData)-1]->fSetData("Een,test,record,wat,moet,werken", ",", true));


Zoals je ziet wil ik graag een reference aan fAdd doorgeven, maar doet ie dat niet.. Ik kan het vast oplossen door fSetData erboven uit te voeren, maar gaat me even om het principe waarom dit niet werkt en hoe het dat wel zou horen..

Acties:
  • 0 Henk 'm!

Verwijderd

Je moet fAdd ook als volgt declareren:

PHP:
1
2
3
function fAdd(&$param) {
  // ...
}


En het kan zijn dat fSetData zo gedeclareerd moet worden:

PHP:
1
2
3
function &fSetData($param1, $param2, ...) {
  // ...
}


De echte oplossing ligt hier tussenin. Maar als je de kans hebt, ga dan alsjeblieft PHP5 gebruiken.

[ Voor 57% gewijzigd door Verwijderd op 07-10-2004 15:21 ]


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Hoezo phpp5?

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Heb je het stuk over references al doorgelezen op de php-site?

References zijn geen pointers, en het is vrij duidelijk dat je dat wel wilt doen hier. Indien je dit wilt laten werken zul je in de functie fAdd het als reference doorgeven en niet in de functiecall.

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
Hé bedankt, denk dat ik nu wel weer eventjes uit de voeten kan :)

Acties:
  • 0 Henk 'm!

Verwijderd

Dit kan niet met php 4
$array[0]->functie();
eerst $iets = &$array[0] en daarna $iets->functie(); PHP 5 kan het wel

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Best belachelijk eigenlijk, net zoals je niet kunt doen: $bla = funcDieArrayReturned ()[4];

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
@TimD: Mm da's wel heel jammer.. dan maar workaround..

@.oisyn: Ja, is soms inderdaad irriterend.. Wat je wel kan doen is een extra argument aan funcDieArrayReturned meegeven bijv:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
function funcDieArrayReturned($iReturnIndex)
{
    /*
      Array vullen
    */

   if ($iReturnIndex >= 0)
         return $Array[$iReturnIndex];

   return $Array;
}
funcDieArrayReturned(4);

Maar idd, I agree.. ook eenzelfde tekortkoming


edit:
@Banpei
PHP:
1
2
3
4
5
function fAddStraat(&$rStraat)
{
   /*...*/
}
$oLijst->fAdd($aoData[/*....*/]->fSetData(/*....*/));

werkt btw niet :?

[ Voor 32% gewijzigd door r0bert op 07-10-2004 16:19 ]

Pagina: 1