多维关联数组 (PHP)

13

我对PHP中的数组不熟悉,正在尝试理解如何创建一个多维关联数组。当我使用 print_r 函数时,我希望数组的样子是这样的:

Array ( [0] => Array ( [alert] => alert [email] => Test ) )

相反我得到了这个:

Array ( [0] => Array ( [alert] => Array ( [email] => Test ) ) )

我正在使用的代码是这样的:

$alert_array = array();

$alert_array[]["alert"]["email"] = "Test";

我本以为尝试这样做会有效,但显然我的语法有点问题。不过我认为我还是朝着正确的方向努力了,你觉得呢?

$alert_array[][["alert"]["email"]] = "Test";

感谢你的帮助(如果这很基础,对不起,我找不到确切解答的问题)!


尝试使用 array_push - elclanrs
@elclanrs,我还不知道如何使用array_push仅推送“email”值或仅推送“alert”值? - MillerMedia
3个回答

33
$alert_array = array();
$alert_array[] = array('alert' => 'alert', 'email' => 'Test');
...
var_dump($alert_array);

在您的情况下,您需要这样指定key

$alert_array[$key]["alert"] = "alert";
$alert_array[$key]["email"] = "Test";

你需要带有计数器的循环。

如果你使用的是 PHP 5.4+,你可以使用短数组语法:

$alert_array = [];
$alert_array[] = ['alert' => 'alert', 'email' => 'Test'];

哦,太棒了。比我想象的简单多了,我没想到可以用这么基本的方法来实现(我想得太多了)。谢谢!(顺便说一句,当它允许时,我会在几分钟内接受你的答案) - MillerMedia
@MxmastaMills 欢迎,你在这里有什么问题可以问我 :) - Dejan Marjanović
另一个快速问题,我想用这种方法“推送”新对象到数组中。我尝试使用array_push($alert_array, 'alert' => 'alert', 'email' => 'Test');但是它没有起作用(我认为这是因为第二个逗号)。基本上,我正在尝试在循环运行时将对象添加到数组的末尾... - MillerMedia
@MxmastaMills,如果您一次只推送一个元素(数组),则应仅使用$array[] = $value,否则应使用array_push。如果您发布您的代码,我可能可以更好地帮助您。在循环中使用“我的答案”没有问题。 - Dejan Marjanović
好的,这是相当复杂的代码,所以我会整理一个简化版本并将其添加在上面(除非您希望我将其作为一个新问题添加)。 - MillerMedia
显示剩余2条评论

2
如果您使用数组函数将已经存在的数组放入新数组中,则结果将是多维数组。
    $alert_array = array();
    $alert_array[] = array('alert' => 'alert', 'email' => 'Test');
    print_r($alert_array);

    /* result will be
    Array ( [0] => Array ( [alert] => alert [email] => Test ) )
    */

在这种情况下,结果将是一维数组。
$alert_array = array();
while($variable = mysqli_fetch_assoc($something)) {
$alert_array[] = $variable;
}

请参考数组函数

0

所有关联关系:

$alert_array = ["alert"  => ["email"  => "test"],
                "act"    => ["phone"  => "data"],
                "report" => ["pager"  => "yes" ],
                "advise" => ["letter" => "no"  ] ];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接