PHP使用2种方法和循环填充多维数组,其中1种方法取决于另一种方法


PHP populate multi dimensional array using 2 methods and loop, 1 depending on the other

我试图建立我的第一个多维数组-我理解使用硬编码值ok,但试图用值填充数组是让我打结。

我有2个结果集,我用来构建数组。

  • 我有一个方法$hostnames返回所有的'主机名'作为一个对象

    主机名= server_model美元-> get_hostnames ();

  • 我有一个方法$usernames返回上面指定的'主机名'的所有'用户'。

    $usernames = $userlogons_model->get_users_by_hostname($hostname->hostname);

首先,我要构建数组:

$hostnames = array(
            $host => $hostname,
            $users => array(
                $key => $username
            )
        );

然后填充数组:

$hostnames = $server_model->get_hostnames_for_costs();
        foreach ($hostnames as $hostname) {
            $usernames = $userlogons_model->get_users_by_hostname($hostname);
            echo $hostname->hostname;
            foreach ($usernames as $user){
                echo $user->username;
            }
        }

我的编辑器显示未定义的变量,我在第一个块中声明数组。我没有得到输出-肯定是语法错误,我很挣扎。如果你能帮忙,我将不胜感激!

欢呼,迈克

在PHP中,不需要"构建"一个数组然后填充它。您可以在填充数组时创建数组。

在你的第一个代码块中,它抛出错误,因为它不知道$host, $hostname, $users, $key或$username是什么,即它们是未定义的。

我不确定你想要你的最终数组是什么结构,因为我不确定$key, $host等是什么意思,有一百万种方法来创建一个数组,这取决于你需要什么,但这里有一个例子,你可以这样做:

// Get all hostnames
$hostnames = $server_model->get_hostnames_for_costs();
// Iterate through each hostname
foreach ($hostnames as $hostname) 
{
    // Get all users of the hostname
    $usernames = $userlogons_model->get_users_by_hostname($hostname);
    // Iterate through each user and append it to the user array
    $user_arr = array();
    foreach($usernames as $user)
    {
        // Append the user to the user array
        $user_arr[] = $user;
    }
    // Add the user array to your 
    $my_arr[] = array (
        'host' => $hostname,
        'users' => $user_arr
    );
}
echo var_dump($my_arr);