2015-06-16 69 views
0

我有一個表格,它將狀態id作爲數組提交給update.php。下面是提交表單輸入和發送URL

<? echo"<input type='hidden' name='status[]' value='$status' />"; ?> 
<? echo"<input type='hidden' name='id[]' value='$id' />"; ?> 

update_pnr.php?status%5B%5D=0&id%5B%5D=4&status%5B%5D=0&id%5B%5D=5 

應該更新傳入信息PHP是:

$newarr = array_combine($_GET['status'],$_GET['id']); 
foreach($newarr as $index => $value){ 
    echo 'index: ' . $index . 'Value: ' . $value . '<br>'; 
} 

我期待:

0 Value: 4 
0 Value: 5 

但第一行是忽略,我只收到最後一行。這是爲什麼 ?

+0

你可以用它代替get方法 – Ramki

+1

POST方法當兩個狀態是== 0那麼他們只能一鍵即0 $改編[0 ] = 1; $ arr [0] = 2; echo $ arr [0]; // 2 – codeneuss

+3

var_dump you $ _GET first –

回答

1

可能的解決方法:

foreach($_GET['status'] as $key => $val) 
    echo $val . 'Value: ' . $_GET['id'][$key]; 
+0

你的回答沒有解釋什麼是陣列組合中的OP問題:) –

+0

看問題的意見。 – codeneuss

2

據文檔array_combine

通過使用從鍵陣列作爲鍵,並從值陣列中的相應值的值中的值創建一個數組。

http://php.net/manual/en/function.array-combine.php

首先參數數組的值是用作密鑰和第二參數數組的值用作值

$a = array('green', 'red', 'yellow'); 
$b = array('avocado', 'apple', 'banana'); 
$c = array_combine($a, $b); 

print_r($c); 

輸出:

Array 
(
    [green] => avocado 
    [red] => apple 
    [yellow] => banana 
) 

你的情形是:

你的陣列$_GET['status']

Array(
      [0] => 0 
      [1] => 0 
     ) 

陣列$_GET['id']:結合

Array 
     (
      [0] => 4 
      [1] => 5 
     ) 

後它變爲:

Array 
(
    [0] => 5 
) 

由於陣列狀態具有相同的值的兩倍,其是組合陣列的密鑰。由於關鍵的是它的獨特與最後的值改寫:由

$newarr[0] => 5 

$newarr

$newarr[0] => 4然後$newarr[0] => 5

$newarr[0] => 4覆蓋只有一個鍵和值。

Live analysis

+0

正確,但不是一個soution。 – codeneuss

+0

OP詢問爲什麼發生這種情況。 OP沒有要求解決方案@ v.eigler –

+0

我在評論中寫道理由,但有什麼幫助的解決方案。 – codeneuss