Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wywoływanie zmiennych przed podstawieniem im wartości.
Forum PHP.pl > Forum > Przedszkole
S_Olewniczak
Mam następujący skrypt w PHP:
Kod
     <?php
     $a = "$b $c";
     $b = 1;
     $c = 2;
     print ($a);
     ?>

Jest to skrypt przykładowy i wiem, że 2. i 3. linijka powinny być przed pierwszą, ale ja potrzebuje właśnie wywołać ten skrypt w takiej kolejności. Jednak po wywołaniu skryptu na ekranie nic się nie wyświetla. Czy ktoś wie gdzie popełniłem błąd?
ab0012
przepraszam a co ma się wyświetlić? łączysz dwie niezainicjowane zmienne, potem przypisujesz im wartości. jak nic się nie wyświetla? a spacja pomiędzy zmiennymi :]
S_Olewniczak
Mają się wyświetlić wartości zmiennych $b i$c po spacji.
l0ud
No to musisz zmienić kolejność na właściwą. Taka jest reguła że parser php idzie od góry do dołu i to jest chyba logiczne? W php nie ma żadnych "go to" żeby to obejść. Musi być właściwa kolejność i tyle...
ab0012
to było pytanie retoryczne.
a wracając: to niewiem czemu się uparłeś żeby robić tak jak mówisz. poprzesz to jakimś większym kawałkiem kodu bo narazie to widzę że uparłeś się na jedno i już. a powiesz po co Ci takie dziwne rozwiązanie?
S_Olewniczak
-ab0012- oto większy kawałek kodu:
Kod
<?php
class test {
public function WysTabele
print '<table class="tabela" border="1"><tr>';
$i=1;
while (isset($this->np[$i])) { //np- nazwa pola tabeli
print '<td><div class = "naglowek">'.$this->np[$i].'<div></td>';
$i++;
}
print '<td></td><td valign="top"></td></tr>';

$wynik = mysql_query ($SqlWybierajacy);

while ($rekord = mysql_fetch_assoc ($wynik)) {

$i=1;
while (isset($this->pt[$i])) {//pt- pole tabeli
${$this->pt[$i]} = $rekord[$this->pt[$i]];
$i++;
}
$l = $l+1;
if (($l/2) == is_int($l/2)) {
print "<tr onmouseover=\"bgColor='#EFEFFF'\"  onmouseout=\"bgColor='#DADADA'\" \"bgColor='#DADADA'\" style=\"color: #000000\">";
} else {
print "<tr onmouseover=\"bgColor='#EFEFFF'\"  onmouseout=\"bgColor='#EAEAEA'\" \"bgColor='#EAEAEA'\" style=\"color: #000000\">";
}
$i=1;
while (isset($this->wp[$i])) {//wt- wartość pola tabeli
print '<td><p>'.$this->wp[$i].'</p></td>';
$i++;
}
print '</tr>';
}
print '</table>';
}
}
$klasa = new test;

$klasa->np[1] = 'BBB';
$klasa->pt[1] = 'id';
$klasa->pt[2] = 'pole1';
$klasa->pt[3] = 'pole2';
$klasa->pt[4] = 'pole3';
$klasa->wp[1] = „$pole1, $pole2 i $pole3”;
?>


Czy naprawdę nikt nie wie jak mi pomóc? sadsmiley02.gif
Pilsener
Na moje oko, to ustawiasz zmienną w jednym miejscu, a chcesz aby była odczytywana w innym? Poczytaj o przekazywaniu zmiennych pomiędzy stronami/fragmentami kodu. Jeden z prostszych sposobów:

Kod
$go = $_GET['go'];
switch ($go){
case 'bla':
echo $_GET['a'];

break;
case 'cos':
$a = 'blablable';
header("Refresh:0; URL = index.php?go=bla&a=$a");
break;
}
S_Olewniczak
Nie do końca mi o to chodzi. Chciałbym, aby do jakiejś zmiennej przypisać kilka innych zmiennych (na przykład: "$a lub $b albo $c"), które przybierały by wartości dopiero w chwili wywołania pierwszej zmiennej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.