![](/img/trans.png)
[英]Removing Array Element from 2D Array stored in $_SESSION in PHP
[英]Removing a value from array stored in session
我正在學習Yii,並且我正在嘗試使用此操作在會話中保存數組
public function actionStoreProducts($name)
{
$name=trim(strip_tags($name));
$session = new CHttpSession; //add this line
$session->open();
if(!empty($name))
{
if(!isset(Yii::app()->session['_products']))
{
$session->add('_products', array($name));
$this->redirect(Yii::app()->request->urlReferrer);
}
else
{
$myProducts = Yii::app()->session['_products'];
foreach(Yii::app()->session['_products'] as $value)
{
if($value===$name)
{
$this->redirect(Yii::app()->request->urlReferrer);
Yii::app()->end();
}
}
$myProducts[] = $name;
$session->add('_products', $myProducts);
$session->close();
$this->redirect(Yii::app()->request->urlReferrer);
}
}
它完美地工作。var_dump(Yii :: app()-> session ['_ products'])的結果是
array(2) { [0] => string(5) "birla" [1] => string(4) "Tata" }
現在,我想從會話中存儲的數組中刪除值“ Tata” 。 我試過了
public function actionCheck()
{
$name= 'Tata';
if(isset(Yii::app()->session['_products']))
{
$session=new CHttpSession;
$session->open();
if(in_array($name,Yii::app()->session['_products'] ))
{
$keyIs= array_keys(Yii::app()->session['_products'], $name);
unset(Yii::app()->session['_products'][$keyIs[0]]);
}
}
else
{
echo 'session is not set';
}
}
但是會引發錯誤* 間接修改CHttpSession的重載元素沒有任何作用*所以我的問題是如何從會話中存儲的數組中刪除一個值?
$name= 'Tata';
if(isset(Yii::app()->session['_products']))
{
$k=array_search($name,Yii::app()->session['_products']);
if ($k!==false){
unset(Yii::app()->session['_products'][$k]);
}
}
與未設置的簡單數組相同。
我已經解決了問題。我只是將會話中的數組傳遞給變量。 然后我從該數組中刪除了值,然后再次將會話的值設置為array.this是代碼
public function actionCheck()
{
$name='Tata';
if(isset(Yii::app()->session['_products']))
{
$arrayOfProducts=Yii::app()->session['_products'];
$keyIs= array_search($name, $arrayOfProducts);
if($keyIs!== false)
{
unset($arrayOfProducts[$keyIs]);
Yii::app()->session['_products']=$arrayOfProducts;
}
}
}
正如我之前對您所說的,會話屬性是只讀的。
要刪除會話,您必須執行以下操作:
public function actionCheck()
{
$name= 'Tata';
if(isset(Yii::app()->session['_products']))
{
$session=new CHttpSession;
$session->open();
if(in_array($name,Yii::app()->session['_products'] ))
{
$keyIs= array_keys(Yii::app()->session['_products'], $name);
$session->remove($name); //Replace this line whit unset
}
}
else
{
echo 'session is not set';
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.