2017-05-29 37 views
0

如果我在$ _SESSION ['breadcrumb'] ['category']中保存字符串,它會成功保存字符串,但如果我嘗試在$ _SESSION ['breadcrumb']中保存相同的字符串[ '類別'] [ '下腳']它引發以下錯誤不能存儲在多維會話數組

警告:非法串偏移 E 'SHIV':\瓦帕\ WWW \ sugumar \ mysuite \ ajaxjobsearch.php上線13

這是工作

$_SESSION['breadcrumb']['category']="<a href={$sitepath}/jobs?removefromsearch&name=category&id={$id}>$value</a>" ;//works fine 

這是行不通的..

$_SESSION['breadcrumb']['category']['shiv'] ="<a href={$sitepath}/jobs?removefromsearch&name=category&id={$id}>$value</a>" ; //error 

我要救的$ id而不是SHIV

$_SESSION['breadcrumb']['category'][$id] ="<a href={$sitepath}/jobs?removefromsearch&name=category&id={$id}>$value</a>" ; 
+1

'$ _SESSION ['breadcrumb'] ['category']'已經是一個字符串。 –

+1

[多維數組在PHP SESSION]可能的重複](https://stackoverflow.com/questions/21652702/multidimensional-array-in-php-session) – calexandre

+0

'$ _SESSION ['breadcrumb'] ['category']'指到一個已經存在的字符串。 '$ _SESSION ['breadcrumb'] ['category'] ['shiv']'是* not * defined,因此是錯誤。兩個變量的'var_dump()'應該顯示差異。 –

回答

2

因爲你深深的category值是第一個字符串,當你再嘗試使用[anything]它來訪問它試圖訪問該字符串的offset。下面是一個例子:

$_SESSION['breadcrumb']['category']='<a href={$sitepath}/jobs?removefromsearch&name=category&id={$id}>$value</a>'; 
echo $_SESSION['breadcrumb']['category'][0]; 

這將輸出<,因爲這是在字符偏移0(第一個字符)。

真理shiv是不是一個合法的偏移,所以PHP將爆炸了一個警告,然後拼命努力做你問它...它會shiv轉換爲0和替換的character第一個字符「價值<shiv的價值<的第一個字符(無明顯變化)


當偏移是有效數字,你可以用它在字符串中替換字符:

$_SESSION['breadcrumb']['category']='<a href={$sitepath}/jobs?removefromsearch&name=category&id={$id}>$value</a>';//works fine 
$_SESSION['breadcrumb']['category'][0]='!'; 
echo $_SESSION['breadcrumb']['category']; 

輸出:!a href={$sitepath}/jobs?removefromsearch&name=category&id={$id}>$value</a>


這應該足以解釋錯誤。

正如其他人所說,這只是一個迫使圓形釘進入方孔的問題。要糾正這個問題,只需在您的第一行代碼中輸入['category']之後聲明一個密鑰,以便category是子數組的關鍵。