Получить количество символов в массиве?

Я хочу отправить длину контента с запросом 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
);

1

Решение

Предполагая, что вы хотите только посчитать значения, вы можете использовать этот подход:

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

Другие решения

Поскольку вы хотите отправить массив как часть 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);
0