ugrás a tartalomhoz

Függvényben lévő változók elérése?!

Anonymous · 2006. Okt. 7. (Szo), 17.39
Sziasztok!
van egy olyan gondom, hogy van egy függvényem, és azon belül változókat hoztam létre ezt szeretném a függvényen kivül kiíratni: következő képen:

function fuggveny($a) {
	$asd = "tartalom".$a['dsa']."tartalom tovabb";
}
global $asd;
	echo $asd;
de ez így sajna nem müködik :( és nemtudom miért!
a következő képen viszon müködik:

function fuggveny($a) {
	echo "tartalom".$a['dsa']."tartalom tovabb";
}
csak annyi bajom van hogy nem ott kéne kiíratni ahol a php kód van...
ha valakinek van valami ötlete az légyszi segítsen!
előre is köszönöm
Máté
 
1

return

Anonymous · 2006. Okt. 7. (Szo), 17.44
a return-nal visszakapod a megadott változót. Az első módszer azért nem működik, mert az $asd akkor is csak lokális változó, és csak a függvény meghívása után csinálsz belőle globálist. De a globalt sztem fejeltsd el, inkább a return-t használd, ami tömbbel is pl. visszatérhet.

function fuggveny($a) {
    $asd = "tartalom".$a['dsa']."tartalom tovabb";
    return $asd;
}
$out = fuggveny('kimenet');
echo $out;
2

hmm

Anonymous · 2006. Okt. 7. (Szo), 18.07
először is köszönöm hogy segítesz!
Felmerült két kérdésem
egyik:

$out = fuggveny('kimenet');
itt a kimenet helyére mit írjak?
másik:
mivan ha nem csak egy változóval szeretném ezt csinálni?
mindegyikkel csináljam ezt végig?
3

Function

Brad Pitt · 2006. Okt. 7. (Szo), 18.54
Hello!
Ajanlom figyelmedbe a
PHP.NET
oldalt! Magyarul is letoltheto a dokumentacio!

Take care!
4

huha

Anonymous · 2006. Okt. 8. (V), 00.40
neked meg a:
www.muszalybunkonaklenni.hu -t
sznted nem ismerem? csak ezt nemvágtam azért kérdeztem meg...
6

jajj

Anonymous · 2006. Okt. 8. (V), 11.28
yáá baszki bocsi ha én írtam azt a hülyeséget :$ csak nem igazán emléxek tegnap este kicsit sokat ittam :D sorry mégegyszer :(
5

Változó változó

BlackY · 2006. Okt. 8. (V), 10.55

<?php
function fuggveny($a, $v = 'asd')
	{
	global $$v;
	$$v = "tartalom".$a['dsa']."tartalom tovabb";
	}
$asd = '';
fuggveny(array('dsa' => 'izé'));
print $asd . '<br />';
$asdasd = '';
fuggveny(array('dsa' => 'Másik izé'), 'asdasd');
print $asdasd;
A második paraméterben a változó nevét ($ nélkül!) adod meg [ha nem, akkor az $asd-ot keresi]. A PHP kézikönyvet meg tényleg érdemes olvasgatni...

BlackY
7

nah

Anonymous · 2006. Okt. 8. (V), 13.04
na akkor maradjunk annyiban, hogy itt van a kod:

			if (!isset($MAX)) $MAX = 6;

			if (!isset($old)) $old = 0;
			if (!isset($ord)) $ord = "DESC";
			$sor = array();
			$eredmeny = $db->sql_query("SELECT * FROM `asd` ORDER BY id {$ord}");

			for ($i=0;$i<$db->sql_numrows($eredmeny);$i++) {
				$sor[] = $db->sql_fetchrow($eredmeny);
			}

			$max = sizeof($sor);

			$ig = min($old + $MAX, $max);

			for ($i=$old;$i<$ig;$i++) {
				if ($ord == "DESC") {
					$j = $max - $i - 1;
				} else {
					$j = $i;
				}
				hozzaszolas($sor[$i]);
			}

			function hozzaszolas($a)
				{
				$bal_0 = "asdasd'.$a['id'].'asdasd";
				}
ezt nem én írtam nem is értem teljesen és itt a $bal_0 szeretném kiiratni mashol
most probálgattam ugy ahogy mondtátaok de nemigazán volt jo egyikse...
:(
8

ez gyenge...

TeeCee · 2006. Okt. 8. (V), 15.14
            function hozzaszolas($a)
                {
                $bal_0 = "asdasd'.$a['id'].'asdasd";
                }



...még példának is :P Pláne, miután mondták, hogy mit kell csinálnod...
Mit szeretnél azzal a függvénnyel?
"Szeretnék hasonló alakú, de helyenként változó értéket megadni". Nagyon helyes, pont erre való...

  /* Definiálunk egy függvényt, ami megformáz egy url-t linknek... */
  function formazdLinknek( $url, $felirat = 'Katt ide, ez egy link') {
    /* Mivel nem túl bonyolult manőver, ezért egyből ezt adjuk vissza */
    return '<a href="'.$url.'">'.$felirat.'</a>';
  }

/* Használata: */
$link = formazdLinknek( 'www.teecee.hu', 'Ez lenni enyém weblap.' );
/* Ezután a $link változóban bennevan a függvény által visszaadott érték. */
Függvényen belüli változóhoz nem férsz hozzá, azt viszont meg lehet csinálni, hogy a függvényen belül egy függvényen kívüli változót manipulálsz, és akkor azt elérheted máshonnan is. (global kulcsszó)

Amúgy a "függvényen belüli változóhoz hogy férek hozzá" másik tipikus példája az objektumorientált programozás, amikor egy objektum attribútumát használod fel, de úgy érzem, jelen esetben nem való még neked. ;)

Szerintem olvasgatnod kellene még egy kicsit néhány PHP 24 óra alatt vagy hasonló könyvecskét, mert a kérdéseid alapján az alapvető programozási/programozói szemléletmód hiányzik. Nem gond, meg lehet találni, de ahhoz még olvasni és gyakorolni kell. Ja, és a könyvekbeli/neten található példákat először gépeld be, mentsd le, és ha sikerült működésre bírni, akkor utána kis válltoztatásokkal csinálj belőle egy egész másmilyen dolgot. Így lassan, de biztosan megtanulod, hogy mi mire való és hogy működik.

Az eredeti példádhoz visszatérve:

            function hozzaszolas($a)
                {
                $bal_0 = "asdasd'.$a['id'].'asdasd";
                }
Ez nem jó példa, mert a függvény valójában semmit sem csinál, hiszen egy $bal_0 változónak értéket ad és kész. Nem adja sem vissza (return), ki sem iratja, sőt, mégcsak nem is a főprogramban lévő változóhoz nyúl hozzá, hogy máshonnan elérhető legyen (global).

A kérdés most csak a következő:
Vajon át tudod-e alakítani az én példámat olyanra, hogy a Tied működjön?...
9

kész

Anonymous · 2006. Okt. 8. (V), 20.18

	function kiir($ir)
		{
		echo $ir."<br />";
		}

	$valtozo = kiir("valami");
	echo $valtozo;

	elméletileg kiírja hogy valami, bár nemprobáltam
annyi bajom van még hogy ugye a programban egy függvény van tehát így tudom meghívni hogy hozzaszolas("adas") és akkor ennek a tartalmát írná ki..
de azon a függvényen belül ahogy hozzá rendelem a változohoz a kiírando szoveget
nem csak egy ilyen lenne hanem 8 abbol négyet jobb oldalon szeretnék kiíratni, 4et pedig balon. ezért nem olyan egyszerü szerintem :(
ui.: olvasgatom a php 24 ora alatott meg érzem magamon hogy fejlődök meg hogy hasznos a tanulás, mert egyre többet tudok, és értem amit tanulok, csak nem nagyon van rá időm, mert csinálni kell.. és nem tanulni.. :(
köszönöm a segítséget!
10

???

TeeCee · 2006. Okt. 9. (H), 08.40
Én Istenbizony igyekeztem megérteni, hogy mi a problémád, de nem tudtam értelmezni a 4 bal, 8 jobbos mondatodat.

Amit írtál, az viszont nem jó. Elemezzük csak:
1.1) a kiir fv-el számolsz ki, de a kiir() nem ad vissza semmit, hanem kiírja a paraméteret, amit megtold egy stringgel.
2.) kiíratod a $valtozo-t, ami (var_dump-pal ellenőrizd) minden bizonynal NULL lesz.

Mint mondottam (és mások is) a return való arra, hogy visszaadj értéket...

ui. : gyönyörű barátnőm orvosnak tanul. Majd első agyműtéténél bal kézzel az 'orvoslabor.hu' oldalon fog tudakozódni, hogy mit hogy kell csinálnia...
ui.2: csinálni a WCn kell. Programozni meg megtanulni és utána kell 'csinálni' (itt a weblaboron biztosan sok hozzáértőt találsz, aki jópénzért, képességeidhez képest akár gyorsan is megtaníthat PHPzni)
11

hu

Anonymous · 2006. Okt. 9. (H), 13.58
hosszú... azért köszi