2013-08-28 15 views
7

// Zwraca 10 pytanie od pytań tabeliJak przechowywać tablicę do zmiennej sesji w PHP

$result = mysqli_query($con,"SELECT question FROM questions ORDER BY rand() LIMIT 10' "); 
while($row = mysqli_fetch_row($result)) 
{ 
$que[]=$row[0]; 
} 

Teraz muszę przechowywać cały zestaw $que[] w zmiennej sesji. (czyli 10 pytań)

coś takiego

$_SESSION['question'] = $que[]; 

$my_array[] = $_SESSION['question']; 

tak, że $my_array[0] powraca pytanie pierwsze, $my_array[1] zwraca drugie pytanie i tak.

(dzięki za pomoc z góry)

+1

tylko '$ _SESSION ['question'] = $ que;' no [] –

Odpowiedz

10

Przypisywanie

$_SESSION['question'] = $que; 

print_r($_SESSION['question'][0]); daje pierwsze pytanie.

+1

Czy użycie echa zamiast print_r będzie inne? – Gokigooooks

5

jesteś prawie poprawne, trzeba tylko się [] podczas dodawania do tablicy.

$_SESSION['question'] = $que; 

Upewnij się, że masz zamiar pierwsza sesja, umieszczając to na górze skryptu rozpocznie sesję, jeśli nie istnieje:

if(!isset($_SESSION)) { 
    session_start(); 
} 

Aby wyciągnąć go z powrotem:

$array = $_SESSION['question']; //Assigns session var to $array 
print_r($array);     //Prints array - Cannot use echo with arrays 


zakończeniu dodawania

Do iteracji po tablicy można zazwyczaj użyć for lub foreach. Dla instrukcji naprawdę działa tylko wtedy, gdy klucze tablicy są przyrostowe (0, 1, 2, 3 itd.) Bez żadnych przerw.

for($x = 0, $max = count($array); $x < $max; ++$x) { 
    echo $array[$x]; 
} 

foreach($array as &$value) { 
    echo $value; 
} 

Obie zostały napisane pod kątem wydajności. Bardzo ważne jest, aby wiedzieć, że korzystając z odniesienia (&$value, zauważ &), że jeśli edytujesz odniesienie, pierwotna wartość zmienia się. Kiedy nie używasz przez odniesienie, tworzy kopię wartości. Tak więc na przykład:

//Sample Array 
$array = array('0' => 5, '1' => 10); 


//By Reference 
foreach($array as &$value) { 
    $value += 2;    //Add 2 to each value 
    echo $value;    //Echos 7 and 12, respectively 
} 
print_r($array); //Now equals array('0' => 7, '1' => 12) 


//Normal Method 
foreach($array as $value) { 
    $value += 2;    //Add 2 to each value 
    echo $value;    //Echos 7 and 12, respectively    
} 
print_r($array); //Still equals array('0' => 5, '1' => 10) 

Referencje są szybsze, ale nie jeśli struganie na modyfikację wartości zachowując oryginalną tablicę nienaruszone.

+0

Nie działa:/to co zwraca to tylko 'Array' – Aayush

+0

jak mogę uzyskać dostęp s te wartości są teraz przechowywane w sesji? – Aayush

+0

Ohkay bez echa z tablicą! Rzeczywiście chcę wydrukować te fragmenty $ my_array [0], $ my_array [1], $ my_array [2] .... $ my_array [10]? jak to zrobić przez printf, a następnie? – Aayush

2

użycie

session_start(); 
$_SESSION['question'] = $que; 
&que = array(an array of your 10m question s); 

gdy chcesz wywołać go na innej stronie, aby uzyskać linię w górę od pytania, użyj

while (list($key, $value) = each($_SESSION)) { 
#Echo the questions using $key 
    echo "Here is a list of your questions"; 
    echo "<br/>"; 
    while (list($key2, $value2) = each($_SESSION)) { 
#$value2 show's name for the indicated ID 
#$key2 refers to the ID 
     echo "<br/>"; 
     echo "Question: ".$value2." "; 
     echo "<br/>"; 
    } 
    echo "<br/>"; 
} 

lub można również użyć

print_r; 
Powiązane problemy