2017-05-31 203 views
0

我使用以下代码:计数()返回错误值

$row_arr=$_POST['row_driver']; 
print_r($row_arr); 

回报:

阵列([0] => D1 [1] => D2 [2] => D3 [3] => D5)

echo count($row_arr); 

是回到我的

任何理由的值?

这里row_driver是通过一个形式接收从使用HTML形式的隐藏的元素属性的先前PHP页面的阵列。此外,

foreach($row_arr as $driver) 
{ 
//code here 
} 

在返回:

警告:的foreach()无效的论点提供在 d:\ XAMPP \ htdocs中\的拼\上线booking_feed.php 36

+1

[如何计算php关联数组中项目的数量]的可能重复(https://stackoverflow.com/questions/10604173/how-to-count-the-number-of-items-in-a -php-associative-array) –

+0

这看起来像一个索引数组 – Webdev

+0

如果你有一个隐藏的HTML输入,那么'$ _POST ['row_driver']'是一个字符串吗?这也解释了你正在面临的第二个问题,用'foreach()' – JustBaron

回答

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)"; 

,因此,在1

count()函数结果

这也可以解释你所面临的第二个问题,有foreach(),其中函数需要一个数组,但你提供一个字符串。

的溶液是使用foreach循环为隐藏的HTML输入这样的:

<?php foreach($rows as $row_driver){?> 
    <input type="hidden" name="row_driver[]" value="<?php echo $row_driver; ?>"/> 
<?php }?> 

这然后打开$_POST['row_driver']到一个数组。

0

问题在于隐藏字段

foreach ($rows as $value){ 
<input type="hidden" name="row_driver[]" value="<?php echo $value; ?>"> 
} 
+0

但我的数组并非如此。 –

+0

我可以看到如何设置隐藏字段的值 – Webdev

+0

'' –

1

您可能只是将在一些变量计数值:

$row_arr=Array('d1','d2','d3','d4'); 
print_r($row_arr); 

$count = count($row_arr); 
echo 'Your Count is:- '.$count; 
+0

它返回相同的值。 –

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 

回报的信息,而不是打印出来。

返回值

如果给定的一个字符串,整数或浮点数,本身将被打印的值。 如果给定一个数组,值将以显示 键和元素的格式显示。类似的符号用于对象。

当返回参数为TRUE时,此函数将返回一个字符串。 否则,返回值为TRUE。

print_r()可以使用特殊打印方法在阵列和关联数组(对于此更有用)来显示的所有值。

关联数组:

Associative arrays是使用您分配给他们的名字命名的键阵列。


如果使用echo你有一个数组索引打印。作为示例$row_arr[0]或者如果您使用关联数组而不是索引,则使用key。它可能是字符串。