2017-03-11 1 views
1

Je souhaite envoyer une longueur de contenu avec une requête http. Pour une chaîne normale, je peux utiliser la fonction strlen(). Mais comment puis-je utiliser cela pour un tableau spécialement pour un tableau multidimensionnel en PHP? J'ai trouvé le script suivant pour extraire un tableau comme le var_dump(). Mais de quoi ai-je besoin pour le Content-Length?Obtenir le nombre de caractères dans un tableau?

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 ")"; 
     } 
    } 
} 

MISE À JOUR:

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

de quoi? un tableau ou quoi? – hassan

+0

Pour une requête HTTP. Pour envoyer des données à Google via POST, je dois utiliser une longueur de contenu dans l'en-tête de la demande. J'ai mis à jour ma question avec un exemple de tableau. –

Répondre

2

En supposant que vous voulez seulement compter les valeurs, vous pouvez utiliser cette approche:

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

Si vous voulez aussi compter les clés, cela ressemble à ça:

$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

Merci pour votre réponse. Je pense que la demande l'attrape, mais je ne suis pas là où je veux. Je dois créer une nouvelle question. –

0

Puisque vous voulez envoyer le tableau dans le cadre d'une requête http, vous pouvez préparer avec http_build_query et compter le strlen de la chaîne retournée par 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); 
longueur du contenu