如果我在$ _SESSION ['breadcrumb'] ['category']中保存字符串,它会成功保存字符串,但是如果我尝试在$ _SESSION ['breadcrumb'] ['category']中保存相同的字符串[ 'shiv']它会抛出以下错误
警告:非法字符串偏移'shiv' 第13行的E:\ wamp \ www \ sugumar \ mysuite \ ajaxjobsearch.php
这是有效的
$_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>" ;
答案 0 :(得分: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
转换为{{ 1}}并将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']
是子数组的关键。