2017-03-11 6 views
1

httpリクエストでコンテンツの長さを送信します。通常の文字列の場合、関数strlen()を使用できます。しかし、私はPHPで多次元配列専用の配列にどのように使っていますか?私はvar_dump()のような配列を抽出する次のスクリプトを見つけました。しかし、私はContent-Lengthに何が必要ですか?配列内の文字数を取得しますか?

function count_array_chars($array){ 
    foreach($array as $key => $value){ 
     if (!is_array($value)) 
     { 
      echo $key ." => ". $value ."\r\n" ; 
     } 
     else 
     { 
     echo $key ." => array(\r\n"; 

     foreach ($value as $key2 => $value2) 
     { 
      echo "\t". $key2 ." => ". $value2 ."\r\n"; 
     } 

     echo ")"; 
     } 
    } 
} 

UPDATE:あなたも、キーをカウントしたい場合

$array = array(
    "1" => "abcd", 
    "2" => "xyz" 
); 

function count_array_chars(array $array) 
{ 
    $charNumber = 0; 
    array_walk_recursive($array, function($val) use (&$charNumber) 
    { 
     $charNumber += strlen($val); 
    }); 
    return $charNumber; 
} 

print count_array_chars($array); 

、:

$data_array = array(
    "end"=>array("dateTime"=>$end), 
    "start"=>array("dateTime"=>$start), 
    "summary"=>$name 
); 
+0

コンテンツの長さは?配列または何ですか? – hassan

+0

HTTPリクエストの場合。 POST経由でGoogleにデータを送信するには、リクエストヘッダーにContent-Lengthを使用する必要があります。私は配列の例で私の質問を更新しました。 –

答えて

2

は、あなただけの値をカウントすると仮定すると、あなたは、このアプローチを使用することができますそれはそのように見えます:

$array = array(
    "end" => array("dateTime"=>"end"), 
    "start" => array("dateTime"=>"start"), 
    "summary" => "name" 
); 

function count_array_chars(array $array) 
{ 
    $charNumber = 0; 
    array_walk_recursive($array, function($val, $key) use (&$charNumber) 
    { 
     $charNumber += strlen($val) + strlen($key); 
    }); 
    return $charNumber; 
} 

print count_array_chars($array); 
+0

あなたの答えをありがとう。私は要求がそれをキャッチすると思うが、私はどこに欲しいのではない。私は新しい質問を作成する必要があります。 –

0

あなたは、HTTP要求の一部として配列を送信したいので、あなたがhttp_build_queryでそれを準備し、http_build_queryによって返されたチェーンのstrlen数えることができます:何の

<?php 

$data_array = array(
    "end"=>array("dateTime"=>'end'), 
    "start"=>array("dateTime"=>'start'), 
    "summary"=>'name' 
); 

$http_build_query = http_build_query($data_array); 
echo strlen($http_build_query); 
関連する問題