2012-12-07 118 views
0

我通過url傳遞了一個數組,但是當我想使用$ sim_p [1]時我遇到了「Notice:Undefined offset:1」,但對於偏移量0它工作精細!通過url傳遞數組並通過GET方法得到它

$url = 'My Library.php?num='.$k.'&sim_p[]=' . implode('&sim_p[]=', array_map('urlencode', $sim_p)); //sim_p[ 0 ] and sim_p[ 1 ] are full in this page 
      header ("Location:".$url); 

和我Library.php:

$num = $_GET[ 'num' ]; 
    $sim_p = array(); 
    if($num > 0){ 
    $sim_p = $_GET[ 'sim_p' ]; 
    } 

預先感謝您!

+0

我會建議編碼陣列JSON,並在另一端解碼它。這比自己操縱指數要容易得多。 – thatidiotguy

+0

http://stackoverflow.com/a/5098410/1253747。 tldr:使用serialize()和unserialize() – hndr

+0

另外,儘量不要在文件名中使用空格。從技術上講,這很好,但這是不好的做法。改用駝峯案例(MyLibrary)或下劃線(My_Library)。 –

回答

1

如果您已經使用var_dump($_GET)你可能會得到這樣的事情:

"?num=2&sim_p[]=value1&sim_p[]=value2" 

array(3) { 
    ["num"]=> 
    string(1) "2" 
    ["sim_p"]=> 
    array(1) { 
    [0]=> 
    string(6) "value1" 
    } 
    ["amp;sim_p"]=> 
    array(1) { 
    [0]=> 
    string(6) "value2" 
    } 
} 

請注意,您&而不是&崩潰。這使查詢解析爲$ _GET中的另一個項目,其密鑰爲"amp;sim_p"

這將工作:

$url = 'My Library.php?num='.$k.'&sim_p[]=' . 
     implode('&sim_p[]=', array_map('urlencode', $sim_p));