使用命名键

时间:2016-12-14 08:43:24

标签: php arrays

我知道我可以像这样创建一个数组:

$array = (
    array(
        array(
            array('MyGroup', 'Name', '0'),
            array('MyGroup', 'Name', "1"),
            array('MyGroup', 'Name', "2"),
        )
    )

);

print_r($array);
echo "<br>";

echo $array[0][0][0]. "<br>";
echo $array[0][0][1]. "<br>";
echo $array[0][0][2]. "<br>";

如果我想用以下名称命名键/索引怎么办? echo $array['MyGroup']['Name']['Id];

我试图“在飞行中”创造它们:
$array['MyGroup']['Name']['id'] = "0";

我该怎么做?

更新

但我无法弄清楚如何添加键和放大器价值“类”:

$array['01']['Name'] = "David";
print_r($array);
echo "<br>";

echo $array['01']['Name'];
echo "<br>";

$array['02']['Name'] = "Eva";
print_r($array);
echo "<br>";

echo $array['02']['Name'];
echo "<br>";

$array['02']['Name']['class'] = "five";
print_r($array);
echo "<br>";

Array ( [01] => Array ( [Name] => David ) ) 
David
Array ( [01] => Array ( [Name] => David ) [02] => Array ( [Name] => Eva  ) ) 
Eva
Array ( [01] => Array ( [Name] => David ) [02] => Array ( [Name] => Eva  [David] => Array ( [class] => five ) ) )

更新2

$students = array( 
    "0" => array (
        "Name" => "Eve",
        "Class" => "Five"
    ),

    "1" => array (
        "Name" => "David",
        "Class" => "Nine"
    ),

    "2" => array (
        "Name" => "Eve",
        "Class" => "Four"
    )
);

print_r($students);

我如何创建这样的数组,“即时”?

1 个答案:

答案 0 :(得分:0)

您可以动态执行此操作,但请注意避免覆盖数组的值。

如果你这样做,你将永远覆盖$ array ['MyGroup'] ['Name'] ['id']值,因为你总是在同一个位置。

foreach($data as $key => $value) {
    $array['MyGroup']['Name']['id'] = $value;
} 

您应该更改$ key值的文字“id”或项目的ID值:

foreach($data as $key => $value) {
    $array['MyGroup']['Name'][$key] = $value;
} 

修改为更新2:

你应该告诉我们你的数据源如何动态创建数组,但这是一个实现你想要的结构的例子,假设数据结构像这样传入:

$data->Object->Name
$data->Object->Class

一个解决方案可能就是这样:

$students = array();
foreach($data as $key => $value) {
    $students[][$key] = $value;
}

如果您想手动操作,请使用:

$students[] = array('Name' => $name, 'Class' => $class);

无论如何,如果我们无法看到数据的来源,我们无法正确帮助您。