2017-03-11 45 views
1

我想發送一個帶有http請求的內容長度。對於一個普通的字符串,我可以使用函數strlen()。但是,如何將它用於PHP中的多維數組專門用於數組?我發現以下腳本可以像var_dump()一樣提取數組。但是,我需要什麼內容長度?獲取數組中的字符數量?

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:

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

內容的長度?一個數組還是什麼? – hassan

+0

對於HTTP請求。要通過POST向Google發送數據,我必須在請求頭中使用Content-Length。我用數組的例子更新了我的問題。 –

回答

2

假設你只想計算的值,您可以使用此方法:

$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); 

如果你也想算的鑰匙,它看起來像這樣:

$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);