2011-01-01 23 views
5

Ví dụ:

$_SESSION['1'] = 'username'; // works 
$_SESSION[1] = 'username'; //doesnt work 

Tôi muốn lưu trữ chỉ mục mảng phiên làm chỉ mục mảng. Để o/p đó là:

Array(
[1] => 'username' 
) 
+0

Đó là di sản của công cụ register_globals. Dù sao, có các mục như vậy trong phiên là một điều vô nghĩa. Mảng lồng nhau ** là ** một cách để đi. –

Trả lời

9

$_SESSION chỉ có thể được sử dụng làm mảng kết hợp.

Bạn có thể làm một cái gì đó giống như mặc dù điều này:

$_SESSION['normal_array'] = array(); 
$_SESSION['normal_array'][0] = 'index 0'; 
$_SESSION['normal_array'][1] = 'index 1'; 

Cá nhân, tôi chỉ muốn gắn bó với mảng kết hợp.

$_SESSION['username'] = 'someuser'; 

Hoặc

$_SESSION['username_id'] = 23; 
+0

gd logic. Phiên AS chỉ chấp nhận kết hợp để lưu trữ dưới cùng một chỉ mục mảng và sau đó theo đó lưu trữ các giá trị inteeger như chỉ mục mảng –

5

Tôi nghi ngờ điều này có lẽ là do các mảng $ _SESSION hoàn toàn là một mảng kết hợp. Ngoài ra, như các PHP manual đặt nó:

Các phím trong $ _SESSION kết mảng này tùy thuộc vào cùng hạn chế như tên biến thường xuyên trong PHP, tức là họ không thể bắt đầu với một số và phải bắt đầu với một lá thư hoặc gạch dưới.

Ngẫu nhiên, bạn đã kiểm tra nhật ký lỗi của mình về bất kỳ lỗi cấp THÔNG BÁO nào chưa? (Bạn có thể phải kích hoạt mức này.) Cố gắng sử dụng một phím số sẽ khá có thể gây ra lỗi.

+0

Tôi nhận Cảnh báo: CI_Exceptions :: include (application/errors/error_php.php) [ci-exceptions.include]: failed luồng mở: Không có tệp hoặc thư mục nào trong F: \ wamp \ www \ blood \ system \ libraries \ Exceptions.php trên dòng 163 –

+1

@ Hiển thị mã cho tôi - Điều đó dường như không liên quan. Rất có thể bạn chưa bật các lỗi cấp THÔNG BÁO. –

+0

Có lỗi không liên quan nhưng tôi cần kiểm tra xem có phải lỗi cấp THÔNG BÁO được bật không? –

0

Bạn cũng có thể áp dụng cách này để lưu một chiều mảng:

$_SESSION['form_'.$form_id] = $form_name; 

mà có thể trông giống như sau:

$_SESSION['form_21'] = 'Patient Evaluation'; 

như trái ngược với:

$_SESSION['form'][21] = 'Patient Evaluation'; 

trong đó sử dụng một thứ nguyên mảng khác.

+1

Có nhưng kích thước đầu tiên phải được kết hợp –

Các vấn đề liên quan