PHP数组声明问题

时间:2013-11-01 00:00:45

标签: php arrays declaration

$info = array(
        "First_Names" => "John",
        "Last_Names" => "Smith",
        "Gender" => "Male",
    );

array_push($info["First_Names"], "$fname");

print_r ($info);

我开始通过高中课程学习PHP。我不是很了解我,也不是很注意,但我完全坚持这个;

我要做的是获取由用户(Jack,James,Shelly等)定义的变量$ fname,将其推送到$ info数组中的First_Names数组中。我不确定它出错的地方,但PHP没有将$ info声明为数组(我认为,它表示“警告:array_push()[function.array-push]:第一个参数应该是/ home /中的数组a4938424 / public_html / process.php在第22行“。如果我打印出数组,它将显示默认名称和性别,如果我回显出$ fname变量,它会正确显示。)

我咨询了两个不同的人,他们的建议都没有用,现在我完全被难倒了,每个人都没有建议。有没有人看到它发生了什么?感谢您的回复,请注意我几乎不知道任何PHP。

4 个答案:

答案 0 :(得分:2)

$info['First_Names']不是数组,而是一个字符串("John")。如果将其定义为数组,则可能有效;)

答案 1 :(得分:1)

如果您希望数组的元素是数组,则必须将它们声明为:

$info = array(
        "First_Names" => array("John"),
        "Last_Names" => array("Smith"),
        "Gender" => array("Male"),
    );

然而,恕我直言,这是糟糕的设计。而不是其值为索引数组的关联数组,而是将其反转为索引数组,其元素是关联数组。

$info = array(array('First_Name' => 'John',
                    'Last_Name' => 'Smith',
                    'Gender' => 'Male')
             );

这允许您将每个人视为单个元素,而不必并行遍历所有子数组。要将另一个人添加到阵列,请执行以下操作:

$info[] = array('First_Name' => $fname, 'Last_Name' => $lname, 'Gender' => $gender);

答案 2 :(得分:0)

$info['First_Names']不是数组。如果您尝试将名称推入$info,则需要使用您的信息创建一个数组,然后将其推送(在此过程中创建一个多维数组)。

$a = array("First_Names" => $fname);
array_push($info, $a);

如果您要覆盖['First_Name']中的信息,只需通过密钥访问即可。

$info['First_Name'] = $fname;

答案 3 :(得分:0)

您需要在数组中声明一个数组。这是一个例子:

<?php
$fnames = array("John","Adam");
$lnames = array("Smith","Kowalski");
$gender = array("Male","Male");

$info = array(
            "First_Names" => $fnames,
            "Last_Names" => $lnames,
            "Gender" => $gender
        );

$new_name = "New John";

array_push($info["First_Names"],$new_name);

var_dump($info);
?>

干杯:)