Php 如何使用函数添加带有键值的数组?

Php 如何使用函数添加带有键值的数组?,php,function,multidimensional-array,Php,Function,Multidimensional Array,我对php非常陌生,所以我很确定我的语法是错误的。我也明白简单地添加到数组可能更好,但我的问题更多是为了学习: 这是我的密码。我做错了什么 <?php // list of players $currentPlayers = array( "player1" => array( "name" => "Ryan", "age" => 26, "weight" =

我对php非常陌生,所以我很确定我的语法是错误的。我也明白简单地添加到数组可能更好,但我的问题更多是为了学习:

这是我的密码。我做错了什么

<?php
    // list of players
    $currentPlayers = array(
        "player1" => array(
            "name"   => "Ryan",
            "age"    => 26,
            "weight" => 200,
        ),
    );
    // function to add a new person
    function addPlayer($nextPlayer, $name, $age, $weight) {
        $currentPlayers[$nextPlayer]["name"] = $name;
        $currentPlayers[$nextPlayer]["age"] = $age;
        $currentPlayers[$nextPlayer]["weight"] = $weight;
    }
    addPlayer("player2", "Joe", 23, 180);
    echo $currentPlayers["player2"]["name"];
?>


$currentPlayers
addPlayer
的范围内未定义,您需要通过将函数的签名更改为以下内容来导入它:

function addPlayer($nextPlayer, $name, $age, $weight) {
    globals $currentPlayers;

    // logic here
}
另一种选择(因为PHP喜欢有多种方式来做某事):


$currentPlayers
addPlayer
的范围内未定义,您需要通过将函数的签名更改为以下内容来导入它:

function addPlayer($nextPlayer, $name, $age, $weight) {
    globals $currentPlayers;

    // logic here
}
另一种选择(因为PHP喜欢有多种方式来做某事):


您也可以通过以下方式执行此操作:

函数addPlayer(&$currentPlayers、$nextPlayer、$name、$age、$weight){ }


addPlayer($CurrentPlayer,“player2”,“Joe”,23180)

您也可以通过以下方式执行此操作:

函数addPlayer(&$currentPlayers、$nextPlayer、$name、$age、$weight){ }


addPlayer($CurrentPlayer,“player2”,“Joe”,23180)

有关变量范围的更多信息,请查看此处

如果要使用函数执行此操作,这也会起作用:

$currentPlayers = array(
    "player1" => array(
        "name"   => "Ryan",
        "age"    => 26,
        "weight" => 200,
    ),
);
// function to add a new person
function addPlayer($name, $age, $weight) {
    return array("name" => $name, "age" => $age, "weight" => $weight);
}
$currentPlayers["player2"] = addPlayer("Joe", 23, 180);
echo $currentPlayers["player2"]["name"];

有关变量作用域的更多信息,请查看此处

如果要使用函数执行此操作,这也会起作用:

$currentPlayers = array(
    "player1" => array(
        "name"   => "Ryan",
        "age"    => 26,
        "weight" => 200,
    ),
);
// function to add a new person
function addPlayer($name, $age, $weight) {
    return array("name" => $name, "age" => $age, "weight" => $weight);
}
$currentPlayers["player2"] = addPlayer("Joe", 23, 180);
echo $currentPlayers["player2"]["name"];

请在你的问题中解释什么不起作用。您收到了什么警告或错误消息?您试图调查这个问题的原因是什么?即使在使用global导入变量$currentPlayers之后,我的逻辑似乎也有问题。我没有得到一个错误代码,只是一个空白的浏览器时,它没有运行。我正在使用mamp。我建议启用
E_NOTICE
和其他警告输出,以查看它不工作的原因。如果您无法访问服务器上使用的
php.ini
,请将
error\u reporting(E\u ALL)
放在脚本顶部。请在问题中解释什么不起作用。您收到了什么警告或错误消息?您试图调查这个问题的原因是什么?即使在使用global导入变量$currentPlayers之后,我的逻辑似乎也有问题。我没有得到一个错误代码,只是一个空白的浏览器时,它没有运行。我正在使用mamp。我建议启用
E_NOTICE
和其他警告输出,以查看它不工作的原因。如果您无法访问服务器上使用的
php.ini
,请将
error\u reporting(E\u ALL)
放在脚本的顶部。我发现您的答案被投票支持了4次。这比我接受的练习好吗?如果是这样,您将如何更改逻辑以及您的答案以使其工作?您在问题中发布的脚本中没有任何错误会导致它在脚本处理过程中中止。一定是出了什么事。我建议启用
E_ALL
以帮助调查问题。如果进行了更多故障排除,我会出现语法错误。谢谢你的回答,虽然另一个有效,但我认为你最好回答了我的问题,所以我检查这一个。我看到你的答案被投了4次赞成票。这比我接受的练习好吗?如果是这样,您将如何更改逻辑以及您的答案以使其工作?您在问题中发布的脚本中没有任何错误会导致它在脚本处理过程中中止。一定是出了什么事。我建议启用
E_ALL
以帮助调查问题。如果进行了更多故障排除,我会出现语法错误。谢谢你的回答,虽然另一个有效,但我认为你最好回答了我的问题,所以我正在检查这一个。