数组计数在php中返回错误的答案

时间:2012-11-17 06:51:51

标签: php arrays cakephp

这是我的PHP代码:

$allids_arr = $_REQUEST['allids'];
print_r($allids_arr);
echo $arr_count = count($allids_arr);

阵列打印如下:

Array (
     [0] => 26 
     [1] => 27 
     [2] => 28 
     [3] => 29 
     [4] => 30 
     [5] => 31 
     [6] => 32 
     [7] => 33 
)

但计数显示为1

但正确的答案是8

我的代码中有什么问题?

编辑:

我创建了数组: 这是我的数组创建的代码:

$allids = array();
        $ikall = 0;
        foreach($alldata as $rwosall){
            $allids[$ikall] = $rwosall['journelmodel']['id'];
            $ikall++;
        }   
        $this->set('alldataids', $allids);

这是在我的控制器中。在我的视图页面中:

<input type="hidden" readonly="" id="allids" class="input1" name="allids" value="<?php print_r($alldataids);?>">

表格提交时我要求提供此值。

4 个答案:

答案 0 :(得分:2)

首先,您的代码中几乎没有错误。

  1. 使用不是数组的print_r函数在隐藏字段中分配数组。
  2. 当您提交值并使用$ _REQUEST获取值时,该值被视为字符串。它看起来像数组,这就是count返回1的原因。
  3. 解决方案: 1.您可以将值指定为逗号分隔 比如“x,y,z”

答案 1 :(得分:0)

你需要:

echo count($allids_arr);

$arr_count = count($allids_arr);
echo $arr_count;

:)

答案 2 :(得分:0)

默认情况下,

$_REQUEST包含$_GET, $_POST and $_COOKIE.

的内容

但它只是一个默认值,取决于variables_order;并且不确定你是否想要使用cookies。

如果我必须选择,我可能不会使用$_REQUEST,我会选择$_GET or $_POST - 取决于我的应用程序应该做什么(即一个或另一个,但不是两个):一般来说:

You should use `$_GET` when someone is requesting data from your application.
And you should use `$_POST` when someone is pushing (inserting or updating ; or deleting) data to your application.

无论哪种方式,表演都没有太大区别:与你的其他剧本相比,差异可以忽略不计。

答案 3 :(得分:0)

试试这个:

<?php
    $foo = $_REQUEST['foo'];
    print_r($foo);
    echo $arr_count = count($foo);
?>

使用此查询:

sample.php?foo[]=test&foo[]=baz&foo[]=foo

返回正确的结果:

Array ( [0] => test [1] => baz [2] => foo ) 3

...可能如果你对数组和参数使用相同的名称,那么效果很好。

希望这有帮助。