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

これを使用してみてください:

<?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 に答える
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 に答える