2014-03-12 186 views
-1

我試圖創建一個名爲「eggs」的多維數組,並使用for循環向它添加3個數組。然後,我試圖將他們的ID分配給他們的數組編號。我的代碼是如下:用for循環創建數組

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])); 
} 
+0

你沒有聲明數組'$ eggs' – krishna

+0

@krishna我在'for'做循環,它用第一個參數'eggs'調用我的'create()'函數。 – James

+0

如果你使用變量變量,你幾乎肯定會做錯事。 –

回答

0

你有幾個錯誤

創建$eggs可變

改變這種

$lName = strtolower($arrName); 

$lName = "$".strtolower($arrName); 

那麼你有沒有宣佈$eggs明確任何地方,所以你必須使用$$lName instea d的$eggs

0
As per my understanding below code will help you. 

    $eggCount = 3; 

    for($i = 1; $i <= $eggCount; $i++) { 
      echo "Egg"." ".$i."'s ID: ".$i; 
      echo "<br/>"; 
      $eggs['Egg'][$i]= array("ID" => $i); 
    } 


    Your code is repeating the loop and $$lName is generating the error. 
    Below is your formatted code :- 
    error_reporting(E_ALL); 

    $eggCount = 3; 

    for($i = 1; $i <= $eggCount; $i++) { 
    create("eggs", array($i => array("ID" => $i))); 
    } 

    function create($arrName, Array $arrKeys) { 

    foreach($arrKeys as $key => $value) { 
     echo "Egg ".$key."'s ID: " . $key; 
     echo "<br/>"; 
    } 
} 
0

您的代碼看起來很奇怪,但解決你的問題:

for($i = 1; $i <= $GLOBALS['eggCount']; $i++) { 
    echo "Egg $i's ID: " . $$lName[$i]['ID']; //Use the newly created array 
} 
0

我想你想是這樣的:

$eggsCount = 3; 
$eggs = array(); 

for($i = 0; $i < 3; $i++) { 
    $eggs[$i] = create_egg(array('ID' => $i)); 
} 

print_r($eggs); 

function create_egg($arrayKeys) { 
    $outputArray = array(); 
    foreach($arrayKeys as $key => $value) { 
     $outputArray[$key] = $value; 
    } 
    return $outputArray; 
} 

輸出:

Array 
(
    [0] => Array 
    (
     [ID] => 0 
    ) 
    [1] => Array 
    (
     [ID] => 1 
    ) 
    [2] => Array 
    (
     [ID] => 2 
    ) 
) 
0
<?php 
error_reporting(E_ALL); 

$eggCount = 3; 
$mainaraay = array(); 
for($i = 1; $i <= $eggCount; $i++) { 
    $mainaraay[] = array("ID" => $i); 
} 

create("eggs", $mainaraay,$eggCount); 
function create($arrName,$arrKeys,$eggCount) { 

    $lName = strtolower($arrName); 

    $i = 1; 
    foreach($arrKeys as $key => $value) { 
     echo "<br/>Egg $i's ID: " . $value['ID']; 
     $i++; 
    } 

} 
?> 

嘗試這個....................

0
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); 

    foreach($arrKeys as $key => $value) { 
     $final[$lName][$key] = $value; 
     echo "Egg $key's ID: " . $final[$lName][$key]['ID']; 
    }