2013-08-28 377 views
7

// Trả về 10 câu hỏi từ câu hỏi bảngLàm thế nào để lưu trữ một mảng vào một biến session trong php

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

Bây giờ tôi cần phải lưu trữ bộ này toàn bộ $que[] trong một biến phiên. (Nghĩa là 10 câu hỏi)

Something như

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

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

để $my_array[0] lợi nhuận câu hỏi đầu tiên này, $my_array[1] lợi nhuận câu hỏi thứ hai và như vậy.

(Thanx cho sự giúp đỡ trước)

+1

chỉ '$ _SESSION ['question'] = $ que;' no [] –

Trả lời

10

Gán

$_SESSION['question'] = $que; 

print_r($_SESSION['question'][0]); sẽ cung cấp cho bạn câu hỏi đầu tiên.

+1

Sẽ sử dụng tiếng vọng thay cho print_r khác biệt? – Gokigooooks

5

Bạn đang gần như chính xác, bạn chỉ cần [] khi thêm vào mảng.

$_SESSION['question'] = $que; 

Hãy chắc chắn rằng bạn có một phiên đi đầu tiên, đặt này ở phía trên cùng của kịch bản của bạn sẽ bắt đầu một phiên làm việc nếu một không tồn tại:

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

Để kéo nó lại lên:

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


cuối cùng Addition

Để lặp qua mảng, bạn thường có thể sử dụng hoặc cho phép. Đối với câu lệnh thực sự chỉ hoạt động tốt khi các khóa mảng của bạn tăng dần (0, 1, 2, 3, v.v.) mà không có bất kỳ khoảng trống nào.

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

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

Cả hai đều được ghi nhớ về hiệu suất. Điều quan trọng cần biết là khi sử dụng tham chiếu (&$value, hãy chú ý đến &) nếu bạn chỉnh sửa tham chiếu, giá trị ban đầu sẽ thay đổi. Khi bạn không sử dụng bằng cách tham chiếu, nó tạo ra một bản sao của giá trị. Ví dụ:

//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) 

Tham chiếu nhanh hơn, nhưng không phải nếu bạn định sửa đổi giá trị trong khi vẫn giữ nguyên mảng ban đầu.

+0

Không hoạt động:/những gì nó trả về chỉ là 'Array' – Aayush

+0

làm sao tôi có thể s những giá trị được lưu trữ trong phiên bây giờ? – Aayush

+0

Ohkay không có tiếng vang với mảng! Thực tế tôi muốn các elments này được in $ my_array [0], $ my_array [1], $ my_array [2] .... $ my_array [10]? làm thế nào để làm cho nó có thể thông qua printf sau đó ?? – Aayush

2

sử dụng

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

khi muốn của bạn để gọi nó trên một trang khác để có được một đường lên các câu hỏi của bạn, sử dụng

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/>"; 
} 

HOẶC bạn cũng có thể sử dụng

print_r;