无法检索数组值

时间:2012-01-12 12:39:19

标签: php arrays

我有一个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!为什么这样

4 个答案:

答案 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);