PHP 数组声明问题


PHP array declaration issue

$info = array(
        "First_Names" => "John",
        "Last_Names" => "Smith",
        "Gender" => "Male",
    );
array_push($info["First_Names"], "$fname");
print_r ($info);

我通过高中课程开始学习PHP。我不是完全知识渊博,也不太注意,但我完全坚持这一点;

我正在尝试做的是将用户(杰克、詹姆斯、雪莉等)定义的变量$fname推送到$info数组内的数组First_Names中。我不确定哪里出了问题,但 PHP 并没有将$info声明为数组(我认为,它指出"警告:array_push() [function.array-push]:第一个参数应该是/home/a4938424/public_html/process.php 第 22 行的数组"。如果我打印出数组,它将显示默认名称和性别,如果我回显出$fname变量,它会显示正确。

咨询了两个不同的人,他们的建议都没有奏效,现在我完全被难住了,每个人都没有建议。有人看到这是怎么回事吗?感谢您的任何回复,请注意,我几乎不知道任何 PHP。

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

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

$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);
$info['First_Names']

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

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

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

$info['First_Name'] = $fname;

您需要在数组中声明一个数组。下面是一个示例:

<?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);
?>

干杯:)