[PHP] Doorgeven van variablen via reference

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Code stuk 1:
PHP:
1
2
3
4
5
6
7
8
  foreach ( $element as $lijn )
  {
    switch( $lijn['Scanart'] )
    {
    case 3:
      if ( !__has_next_04_scanning( $lijn['Scandatum'], $element, $fc_4 ) )
    }
  }

Code stuk 2:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function __has_next_04_scanning( $datum, &$element, &$foutcodes )
{
  if ( !is_array($element) || !is_array($foutcodes) || (count($element) == 0) )
    return false;

  $prev_dat = '';
  foreach( $element as $lijn )
  {
    if ( ($lijn['Scanart'] == SA_UNRETOUR) && ($lijn['Scandatum'] >= $datum) )
    {
      $fc = explode( ' ', trim($lijn['Foutcodes']) );
      foreach( $fc as $f )
        if ( in_array($f, $foutcodes) ) return true;
    }
  }

  return false;
}


Nu de vraag:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
$element = 
  0: array = 
    Paketnummer: string = "53484810073"
    Scandepot: string = "530"
    Scandatum: string = "1089583200"
    Scanart: string = "5"
    Foutcodes: string = ""
    LKW: string = "70"
    Route: string = "521"
  1: array = 
    Paketnummer: string = "53484810073"
    Scandepot: string = "521"
    Scandatum: string = "1089669600"
    Scanart: string = "4"
    Foutcodes: string = "ZM"
    LKW: string = "24"
    Route: string = "0"
  2: array = 
    Paketnummer: string = "53484810073"
    Scandepot: string = "521"
    Scandatum: string = "1089669600"
    Scanart: string = "2"
    Foutcodes: string = ""
    LKW: string = "522"
    Route: string = "521"
  3: array = 
    Paketnummer: string = "53484810073"
    Scandepot: string = "521"
    Scandatum: string = "1089669600"
    Scanart: string = "3"
    Foutcodes: string = ""
    LKW: string = "24"
    Route: string = "0"
  4: array = 
    Paketnummer: string = "53484810073"
    Scandepot: string = "52"
    Scandatum: string = "1089669600"
    Scanart: string = "10"
    Foutcodes: string = ""
    LKW: string = "52"
    Route: string = "521"
  5: array = 
    Paketnummer: string = "53484810073"
    Scandepot: string = "521"
    Scandatum: string = "1089756000"
    Scanart: string = "9"
    Foutcodes: string = ""
    LKW: string = "521"
    Route: string = "521"
  6: array = 
    Paketnummer: string = "53484810073"
    Scandepot: string = "521"
    Scandatum: string = "1089756000"
    Scanart: string = "3"
    Foutcodes: string = ""
    LKW: string = "24"
    Route: string = "0"


Nu loopt hij braafjes die $element af in "1".
Op het laatste zie je dat scanart = 3 is, dus gaat hij in de functie, afgebeeld in "2".
Daar wordt de array-pointer gezet op elementje 2.

Dus als hij uit die functie komt, dan is die pointer aangepast...

Is er dan een mogelijkheid om de huidige array-pointer op te vragen & te zetten?

Acties:
  • 0 Henk 'm!

Verwijderd

Nee, volgens mij niet. Je kan hem met reset() wel weer aan het begin zetten.

misschien moet je een andere loop constructie doen:

PHP:
1
2
3
4
5
6
7
8
for($i=0; $i<sizeof($element); $i++)
{
   switch($element[$i]["scanart"])
   case 3:
   {
    //functie
   }
}

Het lijkt me, dat het zo wel werkt, omdat de array key nu in variabel $i opgeslagen wordt en je niet afhankelijk ben van de positie van de pointer. Maar dat weet ik niet zeker.

anders moet je er misschien twee array's met dezelfde informatie van maken?

ps: ik snap je ts titel niet zo goed?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In code stuk "2" kan je zien dat de array bij referentie wordt meegegeven. Nu als ik dat weg doe, dan lukt alles goed (maakt em een kopij aan). Maar dat is niet echt performant natuurlijk...

Ik zal eens proberen op de door jou voorgestelde manier.


Thx!

Acties:
  • 0 Henk 'm!

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

Banpei

Hachiroku on this touge?

Verwijderd schreef op 19 oktober 2004 @ 08:48:
Nee, volgens mij niet. Je kan hem met reset() wel weer aan het begin zetten.
Met key() lukt dat prima hoor. :P

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


Acties:
  • 0 Henk 'm!

Verwijderd

Banpei schreef op 19 oktober 2004 @ 12:32:
[...]

Met key() lukt dat prima hoor. :P
Ja! Kende ik niet. Weer wat geleerd. ;) Wel oppassen met controle op key 0 en 1 (false/true)