取消设置数组元素并重置PHP中的数组值

时间:2017-03-05 20:03:50

标签: php arrays session session-variables

所以我有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 ;

我怀疑这个错误可能包含两件事:

    使用
  1. count($ stack),但我不相信这是主要原因。

  2. 我存储会话的方式。

  3. 我尝试过使用W3Schools和官方PHP网站以及SOF的手册,但没有用。 但是,我仍然不确定array_values()和unset()是否正常工作,因为事情会崩溃,我无法正确测试它。

    我会很感激任何提示。

2 个答案:

答案 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;
        }
    }
 }