2010-04-11 55 views
10

我有一个数组,我想在多个页面上,所以我把它作为一个SESSION数组。我想添加一系列名称,然后在另一个页面上,我希望能够使用foreach循环来回显该数组中的所有名称。我可以在php的SESSION数组上使用array_push吗?

这是会话:

$_SESSION['names'] 

我想用array_push像这一系列的名字添加到该数组:

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

我收到此错误:

array_push() [function.array-push]: First argument should be an array

我可以使用array_push将多个值放入该数组中吗?或者,也许有一种更好,更有效的方式来做我想要达到的目标?

回答

25

是的,你可以。但第一个参数应该是一个数组。

所以,你必须做这样

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

个人,因为我在这个函数中看到没有任何意义我从来没有使用array_push。我只是用

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

非常感谢您的建议! – zeckdude 2010-04-11 10:13:00

+0

谢谢!这也让我难住了一段时间。 – xbonez 2011-10-27 02:48:38

+0

并永远记住session_start(); !!!!! – Mikeys4u 2017-04-21 22:58:10

12

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

谢谢你的帮助! – zeckdude 2010-04-11 10:13:28

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"; 
    } 
} 
?> 

输出

Value: pappu
Value: 10
Value: tippu
Value: 12

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; 
    } 
} 
1
$_SESSION['total_elements']=array(); 
array_push($_SESSION['total_elements'], $_POST["username"]); 
+3

虽然此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – Bono 2015-03-10 16:18:26