2015-11-24 47 views
1

我有多維數組,我在foreach循環中回顯了鍵和值。我想有旁邊的「ID」(密鑰)來更新id的值,並也在旁邊「尺寸」(密鑰)的更新包來更新大小值在foreach循環中更新多維數組

問題 :: 貝婁我的代碼,輸入框回顯出每個鍵的正確值,但是當我點擊更新按鈕時,它會更新...

更新並不一定在foreach循環,順便說一句。我只是認爲這會更容易

預先感謝所有幫助

CODE

 <?php 
session_start(); 

$array=array(
'Homer' => Array 
(
    'id' => 111, 
    'size' => 54 

), 
    'Marge' => Array 
(
    'id' => 222, 
    'size' => 12 

), 
'Bart' => Array 
(
    'id' => 333, 
    'size' => 3 
) 
); 
// update if submit 
if (isset($_POST["submit"])) 
{ 
    // i tired a number of things here but it was all errors 

} 
echo "<form method='post' action=''>"; 

// put the array in a session variable 
if(!isset($_SESSION['simpsons'])) 
$_SESSION['simpsons']=$array; 


// getting each array in a foreach loop   
foreach($_SESSION['simpsons'] as $character => $info) { 

     echo $character.': id is '.$info['id'].', size is '.$info['size']; 
     //add and update input box for each ' id '  and ' size ' 


?> 

<!-- input for id --> 
<input name="<?php $character ?>" value="<?php echo $info['id'] ?>"> 
<!-- input for size--> 
<input name="<?php $character ?>" value="<?php echo $info['size'] ?>"> 

<?php 

echo"<br/>"; 
} 

?> 

<!-- submit button for the form --> 
<input class="inputbox" type="submit" value="Update value of key" name="submit"/> 
</form> 
+0

你剛纔忘了寫'echo'在您輸入'name'屬性。並需要將'name'屬性設置爲數組。所以你輸入的標籤看起來像是 []」value =「<?php echo $ info ['id']?>」>'。 –

+0

@hardiksolanki即使他做了,他也會有兩個同名的輸入元素,這些元素不是無線電,所以從技術上講,一個元素會被覆蓋。他必須使用'[]'括號 –

+0

@FlorianMüller檢查我更新的答案。 –

回答

-1

你必須具有相同的名稱(兩次<input name="Homer" ...>)兩個輸入。我建議一個通用的解決方案:

<input type="text" name="names[]" value="<?php echo $character;?>" /> 
<input type="text" name="ids[]" value="<?php echo $info['id'];?>" /> 
<input type="text" name="sizes[]" value="<?php echo $info['size'];?> /> 

然後你會通過後在你的PHP-代碼收到的數據(如果你不希望看到的名稱作爲輸入域,使其type="hidden")。

<?php 
$names = $_POST['names']; 
$ids = $_POST['ids']; 
$sizes = $_POST['sizes']; 
foreach ($names as $key=>$value) { 
    //name is $value 
    //id is $ids[$key] 
    //size is $sizes[$key] 
} 
+0

感謝您的回覆,它仍然不允許我更新它。我把$ _SESSION ['辛普森'] [$字符] = $ ids;和$ _SESSION ['simpsons'] [$ character] = $ size;在foreach聲明中? – Jakie

+0

你正在更新你的問題。如果你想更新會話值,你可以在我的循環中執行:'$ _SESSION ['simpsons'] [] = array('name'= $ value,'id'=> $ ids [$ key],'size '=> $ sizes [$ key]);' –

-1

的foreach應

foreach($_SESSION['simpsons'] as $tt2) { 
     print_r($tt2); 
     foreach($tt2 as $character => $info){ 

     echo $character.': id is '.$info['id'].', size is '.$info['size']; 
     //add and update input box for each ' id '  and ' size ' 
     } 
    } 
+0

沒有用這種方式打印:S – Jakie

+0

裏面第一個foreach print_r($ tt2); –

+0

謝謝:)。但是如何更新大小和ID。我仍然可以得到它的工作; s – Jakie