我能在php的SESSION数组上使用array_push吗?

17

我有一个数组,想在多个页面使用,因此我将其设为SESSION数组。我想添加一系列的名字,然后在另一页上,使用foreach循环打印该数组中的所有名字。

这是SESSION:

$_SESSION['names']

我想使用array_push将一系列名称添加到该数组中,如下所示:

array_push($_SESSION['names'],$name);

我遇到了这个错误:

array_push() [function.array-push]: 第一个参数应该是一个数组

我可以使用array_push将多个值放入该数组中吗?或者也许有更好的、更高效的方法来实现我想要的目标吗?

6个回答

40

可以,但是第一个参数必须是一个数组。

因此,你必须按照这种方式进行操作。

$_SESSION['names'] = array();
array_push($_SESSION['names'],$name);

个人而言,我从不使用array_push函数,因为我认为该函数没有意义。我只是使用

$_SESSION['names'][] = $name;

非常有帮助的答案。第二个选项很好,简单、干净、有效。 - Samuel Ramzan

12

尝试使用

if (!isset($_SESSION['names'])) {
    $_SESSION['names'] = array();
}
array_push($_SESSION['names'],$name);

1
 $_SESSION['total_elements']=array();
 array_push($_SESSION['total_elements'], $_POST["username"]);

3
虽然这段代码片段可能可以解决问题,但包括解释真的有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您代码建议的原因。 - Bono

1

是的!你可以 使用 array_pushsession数组 中添加元素,你可以根据自己的需求访问它们。

基础知识: array_push 需要前两个参数 array_push($your_array, 'VALUE_TO_INSERT');。 请参考: php手册

例子: 首先,你的session变量应该像这样是一个数组:

$arr = array(
    's_var1' => 'var1_value',
    's_var2' => 'var2_value'); // dummy array
$_SESSION['step1'] = $arr;     // session var "step1" now stores array value

现在你可以在 $_SESSION['step1'] 上使用 foreach 循环。
foreach($_SESSION['step1'] as $key=>$value) {
    // code here
}

这段代码的好处是您可以使用键名访问任何数组值,例如:
echo $_SESSION[step1]['s_var1']  // output: var1_value

注意:您也可以使用索引数组进行循环,例如

$arr = array('var1_value', 'var1_value', ....);

奖励: 假设您被重定向到另一个页面,您还可以在创建的同一数组中插入会话变量。请参见;

// dummy variables names and values
$_SESSION['step2'] = array(
    's_var3' => 'page2_var1_value',
    's_var4' => 'page2_var2_value');


$_SESSION['step1step2'] = array_merge($_SESSION['step1'], $_SESSION['step2']);

// print the newly created array
echo "<pre>";  // for formatting printed array
var_dump($_SESSION['step1step2']);
echo "<pre>";

输出:
// values are as per my inputs [use for reference only]
array(4) {
  ["s_var1"]=>
  string(7) "Testing"
  ["s_var2"]=>
  int(4) "2124"
  ["s_var3"]=>
  int(4) "2421"
  ["s_var4"]=>
  string(4) "test"
}

*您可以像上面一样使用foreach循环,或者从会话变量数组中获取单个会话变量。

eg: 
echo $_SESSION[step1step2]['s_var1'];
OUTPUT:
Testing

希望这有所帮助!

0

试试这个,它会起作用的:

session_start();

if(!isset($_POST["submit"]))
{
    $_SESSION["abc"] = array("C", "C++", "JAVA", "C#", "PHP");
}

if(isset($_POST["submit"]))
{
    $aa = $_POST['text1'];

    array_push($_SESSION["abc"], $aa);

    foreach($_SESSION["abc"] as $key => $val)
    { 
        echo $val;
    }
}

0
<?php
session_start();

$_SESSION['data']= array();
$details1=array('pappu','10');
$details2=array('tippu','12');

array_push($_SESSION['data'],$details1);
array_push($_SESSION['data'],$details2);

foreach ($_SESSION['data'] as $eacharray) 
{
 while (list(, $value) = each ($eacharray)) 
    {
        echo "Value: $value<br>\n";
    }
}
?>

输出

值:pappu
值:10
值:tippu
值:12


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接