【发布时间】:2014-03-12 13:12:03
【问题描述】:
我正在尝试创建一个名为“eggs”的多维数组,并使用for 循环向其中添加 3 个数组。然后,我试图将他们的 ID 分配给他们的数组编号。我的代码如下:
error_reporting(E_ALL);
$eggCount = 3;
for($i = 1; $i <= $eggCount; $i++) {
create("eggs", array($i => array("ID" => $i)));
}
function create($arrName, Array $arrKeys) {
$lName = strtolower($arrName);
$$lName = array();
foreach($arrKeys as $key => $value) {
$$lName[$key] = $value;
}
for($i = 1; $i <= $GLOBALS['eggCount']; $i++) {
echo "Egg $i's ID: " . $eggs[$i]['ID'];
}
}
它输出以下内容:
Notice: Undefined offset: 1 on line 16
Egg 1's ID:
Notice: Undefined offset: 2 on line 16
Egg 2's ID:
Notice: Undefined offset: 3 on line 16
Egg 3's ID:
Notice: Undefined offset: 1 on line 16
Egg 1's ID:
Notice: Undefined offset: 2 on line 16
Egg 2's ID:
Notice: Undefined offset: 3 on line 16
Egg 3's ID:
Notice: Undefined offset: 1 on line 16
Egg 1's ID:
Notice: Undefined offset: 2 on line 16
Egg 2's ID:
Notice: Undefined offset: 3 on line 16
Egg 3's ID:
我希望它输出这个:
Egg 1's ID: 1
Egg 2's ID: 2
Egg 3's ID: 3
编辑: 由于上面的示例相当令人困惑和奇怪,这就是我真正想要做的 - 为服务器创建配置文件 -
function CreateConfig($name, Array $arr) {
$lName = strtolower($name);
$lolswag = fopen("Config/$name.php", "a");
foreach($arr as $key => $value) {
$contents = '<?php
' . $$lName . ' = array(
' . $key . ' => ' . $value . ',' .
');' .
'?>';
}
fwrite($lolswag, $contents);
fclose($lolswag);
}
$serverCount = Base\Console::GetInput("Number of game servers: ");
$serverHandle = array();
for($i = 1; $i <= $serverCount; $i++) {
$serverHandle[$i] = array("Address" => Base\Console::GetInput("Server $i Address: "), "Name" => Base\Console::GetInput("Server $i Name: "), "MaxClients" => Base\Console::GetInput("Server $i Maximum Clients: "), Base\Console::GetInput("Server $i Port: "));
CreateConfig("Servers", array($i => $serverHandle[$i]));
}
【问题讨论】:
-
你还没有声明数组
$eggs -
@krishna 我在
for循环中使用第一个参数eggs调用了我的create()函数。 -
如果你使用可变变量,你几乎肯定做错了什么。
-
变量变量有什么问题?自从我发现它们以来,它们对我非常有用。