PHP en Return

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een class, met erin allemaal functies.
elke functie die returned iets, de output. Alleen bij 1 functie gaat het om array die ik wil laten returnen, maar als dus die array will echoen door middel van de class aan te roepen
' echo $object->per_rij(); '
output hij alleen de eerste rij van de array

[php]
<?php
public function per_rij() {
$data_a3 = $this->koers_afbeeldingen();

for ($i = 0; $i <= 23; $i++) {

//Maak 1 Array
$data_a5[$i] = $data_a4[1][$i];
return $data_a5[$i];
}
?>


ik weet dat als ik $data_a5 return verander in echo dan output hij wel gewoon netjes elke rij, alleen het probleem is dat ik $data_a5 ook in andere functies binnen die class wil gebruiken en met echo werkt het dan dus niet meer. iemand enig idee hoe ik dit kan oplossen

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Je kunt maar 1 keer iets returnen. Tijdens je for lus wordt gelijk bij de eerste doorloop uit je functie gesprongen.

Om een complete array terug te geven zul je de array binnen je lus moeten maken en deze pas na je lus moeten teruggeven.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

return stapt uit de functie. Dat wil zeggen dat alleen je eerste instantie van je loop gevolgd wordt, waarna uit de functie gesprongen wordt. Maak een tussenvariabele aan, zet daar je data in, en return die onder je loop.

/basic. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:04

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op dinsdag 18 januari 2005 @ 21:55:
Je kunt maar 1 keer iets returnen. Tijdens je for lus wordt gelijk bij de eerste doorloop uit je functie gesprongen.

Om een complete array terug te geven zul je de array binnen je lus moeten maken en deze pas na je lus moeten teruggeven.
ok dat heb ik nu dus gedaan,
return $data_a5 staat nu buiten die loop.

Hoe kan ik buiten die class dan die array dan aanroepen? want als ik
echo $object->per_rij(); doe dan krijg ik de melding array. ik weet dus niet hoe ik dan die array kan openen om het zo maar te zeggen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Gewoon hetzelfde als je die array zou aanspreken binnen die class? Er is geen verschil verder hoor. :?

offtopic:
LOL @ whoami. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Verwijderd schreef op dinsdag 18 januari 2005 @ 22:52:
[...]

ok dat heb ik nu dus gedaan,
return $data_a5 staat nu buiten die loop.

Hoe kan ik buiten die class dan die array dan aanroepen? want als ik
echo $object->per_rij(); doe dan krijg ik de melding array. ik weet dus niet hoe ik dan die array kan openen om het zo maar te zeggen.
Aangezien per_rij() een array returned, zou ik print_r() eens gebruiken - echo werkt namelijk (afaik) niet op arrays.
Of gebruik wederom een for/while loop om de waardes uit de array te vissen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja maar ik wil die array dus aanspreken buiten die class.

edit- ja met print_r print ie wel die array alleen ik wil die array zelf losse dingen eruit halen

[ Voor 47% gewijzigd door Verwijderd op 18-01-2005 22:59 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dat kan ook gewoon....

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
public function per_rij() {
  $data_a3 = $this->koers_afbeeldingen();

  for ($i = 0; $i <= 23; $i++) {

    //Maak 1 Array
    $data_a5[$i] = $data_a4[1][$i];
  }
  return $data_a5;
}
?>

PHP:
1
2
$arr = per_rij();
echo $arr[1];

Je kan het gewoon direct zo aanspreken als binnen je class ook...

[ Voor 4% gewijzigd door NMe op 18-01-2005 23:01 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
$cool = $object->per_rij();
echo $cool[1];


net verzonnen, idd je moet eerst ff een var maken, ik dacht dat je meteen die $object->per_rij(); kan laten echoen zonder er eerst een var van te maken.

edit- hoe kan je de bovenste gedeelte al verwerken in de class? zodat je niet eerst buiten de class een var $cool hoeft aan te maken dan?

[ Voor 32% gewijzigd door Verwijderd op 18-01-2005 23:13 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Kan volgens mij niet, zonder globals te maken, en dat wil je niet in dit geval. :) Dit is een alom gebruikte methode, en het kan dus echt geen kwaad. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Verwijderd schreef op dinsdag 18 januari 2005 @ 23:05:

edit- hoe kan je de bovenste gedeelte al verwerken in de class? zodat je niet eerst buiten de class een var $cool hoeft aan te maken dan?
Dan zou je het zo kunnen doen:
PHP:
1
2
3
4
5
6
7
<?php
public function per_rij($i) {
$data_a3 = $this->koers_afbeeldingen();

return $data_a4[1][$i];
}
?>

En dus:
PHP:
1
echo $object->per_rij($i);


Wat je allicht probeert te bereiken is dit
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
public function per_rij() {
  $data_a3 = $this->koers_afbeeldingen();

  for ($i = 0; $i <= 23; $i++) {

    //Maak 1 Array
    $data_a5[$i] = $data_a4[1][$i];
  }
  return $data_a5;
}
?>

En dan:
PHP:
1
2
3
4
5
$cool =  $object->per_rij();
foreach ($cool as $id => $value)
{
  echo $id .':' .$value;
}


Maargoed, het kan aan mij liggen, maar het nut van de functie ontgaat me volledig. (kan natuurlijk ook aan een verkorte versie voor het forum liggen). Maar je maakt nu in je functie een variabele $data_a3 aan waar je niets mee doet. Tenzij "$this->koers_afbeeldingen();" iets met $data_a4 doet is dit vrijwel nutteloos.

offtopic:
Ik werk zelf nooit met classes in PHP, maar kun je niet gewoon een variabele uit een class aanroepen met iets als $array=$object->$arrayname;. Dan zou TS namelijk gewoon $cool=$object->$data_a4[1]; kunnen doen...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bedankt, idd dit is een gestripte versie voor het forum. Ik wou graag een antwoord op een vraag die met de beschikbare info, zoveel mogelijk mensen zo makkelijk mogelijk moeten kunnen gebruiken.

$data_a3 gaat vooraf eerst nog door wat andere dingen heen wat eindigt op $data_a4
a = aanpassing 3 is de output nummer :-) .
Pagina: 1