我使用以下代码:
$row_arr=$_POST['row_driver'];
print_r($row_arr);
返回:
数组([0] => d1 [1] => d2 [2] => d3 [3] => d5)
但
echo count($row_arr);
给我的值是
1
有什么理由?
这里row_driver是使用HTML表单的隐藏元素属性通过前一个PHP页面的表单接收的数组。此外,
foreach($row_arr as $driver)
{
//code here
}
正在回归:
警告:为foreach()提供的参数无效 第36行的D:\ XAMPP \ htdocs \ Carpool \ booking_feed.php
答案 0 :(得分:1)
您可以将计数值存储在某个变量中:
$row_arr=Array('d1','d2','d3','d4');
print_r($row_arr);
$count = count($row_arr);
echo 'Your Count is:- '.$count;
答案 1 :(得分:0)
问题在于隐藏字段
foreach ($rows as $value){
<input type="hidden" name="row_driver[]" value="<?php echo $value; ?>">
}
答案 2 :(得分:0)
您面临的问题是$_POST['row_driver']
不是数组。
如果您有一个隐藏的HTML输入:
<input type="hidden" name="row_driver" value="<?php print_r($rows); ?>">
...然后$_POST['row_driver']
将是一个字符串,例如:
$_POST['row_driver'] = "Array ( [0] => d1 [1] => d2 [2] => d3 [3] => d5 )";
,因此,您的count()
功能会产生1。
这也解释了你所面临的第二个问题,foreach()
,函数需要一个数组,但是你提供了一个字符串。
解决方案是使用foreach循环来隐藏HTML输入,如下所示:
<?php foreach($rows as $row_driver){?>
<input type="hidden" name="row_driver[]" value="<?php echo $row_driver; ?>"/>
<?php }?>
然后,这会将您的$_POST['row_driver']
变成数组。
答案 3 :(得分:0)
表达
The expression to be printed. return If you would like to capture the output of print_r(), use the return parameter. When this parameter is set to TRUE, print_r() will
返回信息而不是打印信息。
返回值
如果给定字符串,整数或浮点数,则将打印值本身。 如果给定一个数组,则值将以显示的格式显示 键和元素。类似的符号用于对象。
当return参数为TRUE时,此函数将返回一个字符串。 否则,返回值为TRUE。
print_r()
可以用作特殊的打印方法来显示数组和关联数组中的所有值(对此更有帮助)。
关联数组:
Associative arrays是使用您指定给它们的命名键的数组。
如果使用echo
,则使用数组索引打印它。作为示例$row_arr[0]
或者如果您使用关联数组而不是索引,则使用key。它可能是字符串。