Я хочу отправить длину контента с запросом 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 ")";
}
}
}
ОБНОВИТЬ:
$data_array = array(
"end"=>array("dateTime"=>$end),
"start"=>array("dateTime"=>$start),
"summary"=>$name
);
Предполагая, что вы хотите только посчитать значения, вы можете использовать этот подход:
$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);
Поскольку вы хотите отправить массив как часть http-запроса, вы можете подготовить его с помощью http_build_query
и посчитать strlen
цепи, возвращенной http_build_query
:
<?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);