PHP push_array 覆盖数据
PHP push_array overwrites data
很抱歉询问之前是否已经有人询问过,但是 none 这些解决方案对我有用。每次我尝试添加到数组中时,我得到的都是新数组。
请参阅下面的 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 个值,尽管我添加了很多次!
如果需要其他信息,请告诉我。
谢谢!
您正在使用 var_dump() 检查错误的变量,因此请尝试 var_dump($_SESSION['words'])
而不是 var_dump($words)
。我试过了,它对我有用。数组推送将值 $word
添加到 $_SESSION['words']
,因此您必须 var_dump $_SESSION['words']
因为 $word
仍然只是一个字符串,而不是数组。
你也可以这样做:
$_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[] = 因为这样就没有调用函数的开销。
几个问题,正如@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;
}
?>
感谢您的建议。我进行了这些更改并且成功了!
<?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...
很抱歉询问之前是否已经有人询问过,但是 none 这些解决方案对我有用。每次我尝试添加到数组中时,我得到的都是新数组。 请参阅下面的 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 个值,尽管我添加了很多次! 如果需要其他信息,请告诉我。 谢谢!
您正在使用 var_dump() 检查错误的变量,因此请尝试 var_dump($_SESSION['words'])
而不是 var_dump($words)
。我试过了,它对我有用。数组推送将值 $word
添加到 $_SESSION['words']
,因此您必须 var_dump $_SESSION['words']
因为 $word
仍然只是一个字符串,而不是数组。
你也可以这样做:
$_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[] = 因为这样就没有调用函数的开销。
几个问题,正如@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;
}
?>
感谢您的建议。我进行了这些更改并且成功了!
<?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...