count()返回错误的值

时间:2017-05-31 06:58:27

标签: php arrays

我使用以下代码:

$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

4 个答案:

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

PHP document

  

表达

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。它可能是字符串。