我有一个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
!为什么这样
答案 0 :(得分: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
您可以在输入字段的名称中使用Arrays,因此可以在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
答案 1 :(得分:1)
$_REQUEST['bid']
只是一个字符串,而不是数组。
你可以使用一些php的字符串函数将它转换为数组:
$result = $_REQUEST['bid'];
$result = strstr($result, '[');
$result = trim($result, '[]');
$array = explode(',' $result);
但我个人认为数字值会映射到服务器端的数据。
答案 2 :(得分: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
答案 3 :(得分: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);