数组计数在php中返回错误答案
这是我的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] =>
$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 doecho 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