我正在使用Laravel 5.我遇到的问题是我在会话中有一个数组,现在我想从该数组中删除一个元素,并且为了我使用array_diff
函数。
当我从会话中获取数组时,它的形式如下:
["4","5","6"]
但是当我尝试从数组中删除元素'5'时,它会使数组变形,结果就是:
{"0":"4","2":"6"}
我的代码是:
array_diff($arr, array(5))
结果与unset([$index])
相同。
真实的代码:
Session::push('compare.products', $id);
$compare = Session::get('compare');
if(($key = array_search($id, $compare['products'])) !== false) {
unset($compare['products'][$key]);
return $compare['products'];
}
答案 0 :(得分:0)
如果您想保留正确的索引,则必须在取消设置后调用array_values
。
在您的情况下,它将是:
Session::push('compare.products', $id);
$compare = Session::get('compare');
if(($key = array_search($id, $compare['products'])) !== false) {
unset($compare['products'][$key]);
return array_values($compare['products']);
}
在一般情况下,它是:
$array = array(0, 1, 2, 3);
unset($array[2]);
$array = array_values($array);
var_dump($array);
/* array(3) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(3)
} */