0

这是我的 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

4 回答 4

2

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

  1. 您使用不是数组的 print_r 函数在隐藏字段中分配数组。
  2. 当您提交值并使用 $_REQUEST 获取值时,它被视为字符串。它看起来像数组,这就是 count 返回 1 的原因。

解决方案:1.您可以将值分配为逗号分隔的值,例如“x,y,z”

于 2012-11-17T08:09:42.203 回答
0

你需要:

echo count($allids_arr);

或者

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

:)

于 2012-11-17T06:55:16.833 回答
0

$_REQUEST,默认情况下,包含$_GET, $_POST and $_COOKIE.

但这只是一个默认值,取决于 variables_order ;并且不确定您是否要使用 cookie。

如果我必须选择,我可能不会使用$_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.

无论哪种方式,性能都不会有太大差异:与脚本的其余部分相比,差异可以忽略不计。

于 2012-11-17T07:17:49.743 回答
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

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

希望这有帮助。

于 2012-11-17T07:34:11.123 回答