2010-12-04 21 views
0

J'ai des résultats inattendus lors de la conversion d'un objet espace de noms en tableau.Résultats inattendus lors de la conversion d'un objet espace de noms en un tableau

<?php 

namespace package\test; 

class Test { 
    private $foo; 
    private $bar; 

} 

$test = new Test(); 
$testArray = (array) $test; 

var_dump($testArray); 

et la sortie est

array 
    '�package\test\Test�foo' => null 
    '�package\test\Test�bar' => null 

Je ne sais pas ce que ces personnages sont de la var_dump? J'ai regardé dans la source et il semble être &#0;. En fait ce que je dois faire est de couper les clés de sorte qu'il finit par être

array 
    'foo' => null 
    'bar' => null 

mais je ne suis pas sûr de savoir comment cibler les caractères avec une expression régulière pour se débarrasser de la partie que je ne veux pas ? C'est pour PHP 5.3.3. Merci.

Répondre

0

Vous n'avez besoin d'aucune expression régulière. Vous pouvez effectuer les opérations suivantes:

foreach ($testArray as $key => $value) { 
    $pos = strrpos($key, chr(0)); // find the last null character 
    if ($pos !== false) { 
     $testArray[substr($key, $pos+1)] = $value; 
     unset($testArray[$key]); 
    } 
} 

Chaque caractère qui ne peut être affiché sera remplacé par un diamant noir (U + FFFD CARACTÈRE DE REMPLACEMENT) par le navigateur. Donc, dans ce cas, il n'aurait même pas de sens de vérifier ce caractère de substitution particulier.

+0

Merci, vous êtes un génie! – axsuul