无法存储在多维会话数组中

时间:2017-05-29 12:08:11

标签: php arrays session multidimensional-array

如果我在$ _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>" ;

1 个答案:

答案 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']是子数组的关键。