所以我有2个文件。在文件1中,我有一个表,在那里我随机选择一些字段并在2D数组的数组中存储(存储在会话中)。当我点击单元格时,我将这些数据发送到我的文件2,我想检查是否点击了随机选择的数组,如果我这样做,我想从主数组中删除这个2D数组。 但是一旦我点击其中一个选定的数组,阵列就会崩溃。
文件1 PHP对此非常重要:
session_start();
$_SESSION['arrays'] = $stack ;
文件2 PHP:
session_start();
if (isset($_SESSION['arrays'])) {
$stack = $_SESSION['arrays'];
for ($i = 0; $i< count($stack);$i++){
if($cooridnates == $stack[$i]){
unset($stack[$i]);
array_values($stack);
$i--;
$Result = true;
break;
}
}
$_SESSION['arrays'] = $stack ;
我怀疑这个错误可能包含两件事:
count($ stack),但我不相信这是主要原因。
我存储会话的方式。
我尝试过使用W3Schools和官方PHP网站以及SOF的手册,但没有用。 但是,我仍然不确定array_values()和unset()是否正常工作,因为事情会崩溃,我无法正确测试它。
我会很感激任何提示。
答案 0 :(得分:1)
您需要将array_values($stack);
的结果分配回$stack
变量。
$stack = array_values($stack);
执行此操作时,也无需使用$i--
,因为您在找到匹配项后会突然退出循环。
您可以使用array_search()
:
$pos = array_search($coordinates, $stack);
if ($pos !=== false) {
unset $stack[$pos];
$Result = true;
$stack = array_values($stack);
$_SESSION['arrays'] = $stack;
}
答案 1 :(得分:0)
你可以通过使用foreach循环来做到这一点:
session_start();
if (!empty($_SESSION['arrays'])) {
foreach( $_SESSION['arrays'] as $key => $val){
if($cooridnates == $val){
unset($_SESSION['arrays'][$key]); // if you want this removed value then assign it a variable before unsetting the array
$Result = true;
break;
}
}
}