2012-01-12 145 views
0

我有一個HTML表單,我將把所有信息發送到服務器端。我的一個領域像無法檢索數組值

<option value="bus_info[{$k->bus_id},{$k->route_from},{$k->route_to}]">{$k->route_from} To {$k->route_to},{$k->bus_time}</option> 

當檢查在PHP端

$bus_information[] = $_REQUEST['bid']; 

var_dump($bus_information);` 

它顯示了以下結果:

array 
    0 => string 'bus_info[1,Guwahati,Amguri]' (length=27) 

現在我怎麼能檢索的數組中的元素?我試過echo $bus_information[0][0];,但是顯示結果b!爲什麼如此

+1

值經由傳遞' $ _REQUEST ['bid']'只是一個字符串,並不像你期望的那樣是一個數組(它是一個字符數組,這就是爲什麼'bus_information [0] [0]'返回'b'的原因,但是在這一點上不相關)。您需要解析數據以提取逗號分隔值。 – mdm 2012-01-12 12:42:41

+2

因爲你所擁有的不是一個數組,它是一個*字符串*,模糊地看起來像一個數組。 – deceze 2012-01-12 12:43:40

回答

3

多維數組在HTML和PHP中不能這樣工作。基於評論

<option value="bus_info[{$k->bus_id}][{$k->route_from}][{$k->route_to}]">{$k->route_from} To {$k->route_to},{$k->bus_time}</option> 

編輯:你應該在你的形式使用該

對不起,這不會在所有的工作。我假設你想讓用戶選擇某種路線,並基於你想傳遞一個特定的值。該方式<select>的工作原理是:

在HTML使用:

<select name="test"> 
    <option value="1">First option</option> 
    <option value="2">Second option</option> 
</select> 

現在,在PHP中可以訪問已提交這樣的值:

$_REQUEST['test'] //this value will be 1 if the user 
        //selected the first option, or 2 if 
        //he selected the second 

您可以使用在輸入字段的名稱陣列,所以這將有可能在HTML中做這樣的事情:

<select name="test[1]"> 
    <option value="1">First option</option> 
    <option value="2">Second option</option> 
</select> 
<select name="test[2]"> 
    <option value="1">First option</option> 
    <option value="2">Second option</option> 
</select> 

請注意,我在name屬性上使用了數組表示法,而不是數值。現在你可以在PHP中做到這一點:

$_REQUEST['test'][1] //this value will be 1 if the user 
        //selected the first option, or 2 if 
        //he selected the second in the first 
        //drop down 
$_REQUEST['test'][2] //this value will be 1 if the user 
        //selected the first option, or 2 if 
        //he selected the second in the second 
        //drop down 

你做那麼,用在value屬性陣列將無法工作。你可以做這樣的事情:

<select name="bus_info"> 
    <option value="{$k->bus_id},{$k->route_from},{$k->route_to}">{$k->route_from} To {$k->route_to},{$k->bus_time}</option> 
</select> 

然後在PHP:

$values = explode($_REQUEST['bus_info']); 
//now $values is an array with 3 elements, the ID, the route_from and route_to 
+0

謝謝。但是當我'var_dump($ _ REQUEST ['bus_info']);',它顯示'null'! – Nitish 2012-01-12 12:49:00

0

由於var_dump()告訴你,你HAVA的字符串,而不是一個數組,意味着你需要使用正則表達式或拆分字符串例如像:

只打印裏面的內容[]像:

<option value="{$k->bus_id},{$k->route_from},{$k->route_to}">{$k->route_from} To {$k->route_to},{$k->bus_time}</option> 

然後,您可以通過以下獲取數組:

$parts = explode(',', $bus_information); 
1

$_REQUEST['bid']只是一個字符串,而不是一個數組。

你可以使用一些PHP的字符串函數,雖然將其轉換爲一個數組:

$result = $_REQUEST['bid']; 
$result = strstr($result, '['); 
$result = trim($result, '[]'); 
$array = explode(',' $result); 

但我個人有一個映射到我的服務器端數據的數值。

+0

謝謝jeroen ... – Nitish 2012-01-12 12:57:55

1

這會給你一個值數組你正在尋找:

在選項值字段刪除陣列封裝:

<option value="{$k->bus_id},{$k->route_from},{$k->route_to}">{$k->route_from} To {$k->route_to},{$k->bus_time}</option> 

現在,您將得到一個字符串與工作當表單提交:

$bus_info_string = $_REQUEST['bid']; 

echo($bus_info_string); 

的字符串看起來像:

'1,Guwahati,Amguri' 

爆炸串

現在使用PHP的explode方法。此字符串的值轉換成一個數組:

$bus_info_array = explode(",", $bus_info_string); 

陣列看起來像這樣:

Array 
(
    [0] => 1 
    [1] => 'Guwahati' 
    [2] => 'Amguri' 
) 

現在訪問的單個元件,簡單地使用:

echo $bus_info_array[0]; // Bus Id 
echo $bus_info_array[1]; // Route From 
echo $bus_info_array[2]; // Route To