PHP push_array会覆盖数据

时间:2015-04-16 18:13:43

标签: php array-push

很抱歉询问之前是否已经询问过,但这些解决方案都不适用于我。每次我尝试添加到数组中,我得到的是新数组。 请参阅以下PHP代码:

<?php    
session_start();
if (!isset($_SESSION['$rNumber'])){
    $_SESSION['$rNumber'] = 0;
}

if(empty($_SESSION['words']))
{
    $_SESSION['words'] = array();
}

if (isset($_POST['button1'])){
    $random = rand(10, 20);
    $_SESSION['$rNumber'] = $_SESSION['$rNumber'] + $random;
    $word  = 'You entered a farm and earned '.$random.' golds.';
    array_push($_SESSION['words'], $word);
} else if ...

}
?>

当我var_dump $ words []时,它总是只有1个值,虽然我添加了很多次! 如果需要其他信息,请告诉我。 谢谢!

4 个答案:

答案 0 :(得分:1)

您正在使用var_dump()检查错误的变量因此请尝试var_dump($_SESSION['words'])而不是var_dump($words)。我试了一下它对我有用。数组推送将值$word添加到$_SESSION['words'],因此您必须对$_SESSION['words']进行var_dump,因为$word仍然只是一个字符串,而不是数组。

答案 1 :(得分:0)

你也可以这样做:

$_SESSION['words'][] = 'You entered a farm and earned '.$random.' golds.';

代替: $word = 'You entered a farm and earned '.$random.' golds.'; array_push($_SESSION['words'], $word);

<强>更新 来自php.net:注意:如果你使用array_push()向数组添加一个元素,最好使用$ array [] =因为这样就没有调用函数的开销。

答案 2 :(得分:0)

谢谢你的建议。我做了这些修改并且有效!

<?php

session_start();
if (!isset($_SESSION['$rNumber'])){
    $_SESSION['$rNumber'] = 0;
}

if(empty($_SESSION['words']))
{
    $_SESSION['words'] = array();
}


if (isset($_POST['button1'])){
    $random = rand(10, 20);
    $_SESSION['$rNumber'] = $_SESSION['$rNumber'] + $random;
    $word  = 'You entered a farm and earned '.$random.' golds.';
    array_push($_SESSION['words'], $word);
} else if...

答案 3 :(得分:-1)

一些问题,正如@MarcB指出的那样,你应该为你的SESSION变量设置一个索引名称。

<?php    
session_start();
if (!isset($_SESSION['gold'])){
    $_SESSION['gold'] = 0;
}

if(empty($_SESSION['words']))
{
    $_SESSION['words'] = array();
}

if (isset($_POST['button1'])){
    $random = rand(10, 20);
    $_SESSION['gold'] += $random;
    $word = "You entered a farm and earned $random golds.";
    $_SESSION['words'][] = $word;
}
?>