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