2013-10-02 19 views
0

下面我有一個表格,如何從一個三維的形式輸入名稱陣列

選擇名稱中包含fixtureId,無論是在家或外出和teamId fixture[id][home/away][teamid],選擇的值獲得的數據是分數:

HTML

<form> 
    <select name="fixture[1][home][5]"> 
     <option value="0">0</option> 
     <option value="1">1</option> 
    </select> 
    <select name="fixture[1][away][10]"> 
     <option value="0">0</option> 
     <option value="1">1</option> 
    </select> 
    <button type="submit"></button> 
</form> 

,我要訪問兩個的foreach選擇名稱值與所選擇的值來輸出這種聯合循環:

echo $fixtureId."-".$venue."-".$teamId."-".$score; 

PHP

foreach($_POST['fixture'] as $fixtureId => $fixtureArray){ 

    foreach($fixtureArray as $venue => $scoreArray){ 

     echo $fixtureId."-".$venue; 

     $teamId = key($scoreArray[0]); 
     $score = $scoreArray[0];  

    } 
} 

$ scoreArray

Array 
(
    [10] => 0 
) 

的問題

目前$fixtureId$venue按預期工作,但即使他們在$scoreArray ?,我也無法獲得分數和團隊ID。

球隊ID應該是10,得分應該是0;

回答

1

讓我們假設你已經選擇了第一個選項,我們面對的第一選擇......

foreach($_POST['fixture'] as $fixtureId => $fixtureArray){ 
// Now $textureId = 1; $fixtureArray = array("home"=> array(5=> 0)); 

    foreach($fixtureArray as $venue => $scoreArray){ 
    // Now $venue = "home"; $scoreArray = array(5 => 0); therefore ... 

     echo $fixtureId."-".$venue; 

     // There is NO index 0, so there is no key for it 
     $teamId = key($scoreArray[0]); 
     // Again, There is NO index 0 
     $score = $scoreArray[0];  

    } 
} 

使用print_r每次你不能確定的指標你的數組。

爲了解決這個問題:你爲什麼不乾脆用另一foreach

foreach($_POST['fixture'] as $fixtureId => $fixtureArray){ 
    print_r($fixtureArray) 

    foreach($fixtureArray as $venue => $scoreArray){ 
     print_r($scoreArray); 
     echo $fixtureId."-".$venue; 

     foreach($scoreArray as $teamId => $score) 
     { 
      echo($teamId."-".$score); 
     } 
    } 
} 
1

我敢打賭,你不夠深入。您foreach()循環之前試試這個:

echo '<pre>'.print_r($_POST['fixture'], true).'</pre>'; 
0

試試這個我已經測試此代碼

echo '<pre>';print_r($_POST);echo '</pre>'; 
    foreach($_POST['fixture'] as $fixtureId => $fixtureArray) { 
     foreach($fixtureArray as $venue => $scoreArray) { 
      echo '<pre>';print_r($scoreArray);echo '</pre>'; 
      //echo $fixtureId."-".$venue; 
      //echo $scoreArray; 
      foreach ($scoreArray as $scoreValue) { 
       echo "fixtureId ".$fixtureId."-"." venue ".$venue." score value ".$scoreValue."<br />"; 
      } 
      /*$teamId = key($scoreArray[0]); 
      $score = $scoreArray[0];*/ 

     } 
    } 

這是你的代碼,我只是更新一些東西。有效。