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

数组计数在php中返回错误答案,php,arrays,cakephp,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] =>

这是我的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);?>">
您需要:

echo count($allids_arr);


:)

$\u请求默认情况下包含
$\u GET、$\u POST和$\u COOKIE的内容。

但这只是一个默认值,取决于变量的顺序;而且不确定你是否想使用cookies

如果我必须选择,我可能不会使用
$\u REQUEST
,我会选择
$\u GET或$\u 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.
无论哪种方式,性能都不会有太大的差异:与脚本的其余部分相比,差异可以忽略不计。

尝试使用以下方法:

<?php
    $foo = $_REQUEST['foo'];
    print_r($foo);
    echo $arr_count = count($foo);
?>
…如果对数组和参数使用相同的名称,可能会很好地工作


希望对您有所帮助。

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

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

    而不是echo$arr\u count=count($allids\u arr);只需使用回声计数($allids\u arr);我已经测试过了,但是它返回
    1
    …您一定在代码中做了一些您没有向我们展示的其他事情。尝试放置
    回显计数($_请求['allids')位于脚本顶部。然后放入
    $allids\u arr=$\u请求['allids']紧接着。然后输入回波计数($allids\u arr)就在那之后。没有理由不给您一致的输出。另外,请
    print\r($\u REQUEST)
    以确保您的操作正确。@Kichu您希望您的
    字段对
    print\r($数组)
    的输出做什么。CTHULTU是对的,该表单将提交一个格式化为数组的字符串。您需要使用JSON打包/解包数据,或者在多个输入中传递数据,每个输入一个值;echo$c=计数($foo)并且它确实打印3实际上他的版本也应该可以工作。赋值的返回值是RHS。@Kichu do
    echo count($allids\u arr,1)它将递归计数,以防某些元素嵌套得更深。不sure@Kichu您确定在打印数组和打印计数之间没有执行任何操作吗?你能把它写成3行独立的代码吗?我不能理解你的建议…你是不是不想用3行代码来写它?这不能解释他输出中的不一致性。print\r($allids\u arr);echo$arr\u count=计数($allids\u arr)//此代码工作正常。在某处$\u请求中必须有默认值。使用print\r($\u请求);
    
    <?php
        $foo = $_REQUEST['foo'];
        print_r($foo);
        echo $arr_count = count($foo);
    ?>
    
    Array ( [0] => test [1] => baz [2] => foo ) 3