Вы получаете NULL, потому что debug_zval_dump () имеет встроенную функцию эха, и вы не можете установить эхо для переменной. Таким образом, ваш $ v = foo () фактически дает вам $ v = "". Причина, по которой вы получаете счет 2 для пустой переменной, связана с внутренней оптимизацией PHP.
Читайте об этом здесь: http://us3.php.net/manual/en/function.debug-zval-dump.php
Таким образом, чтобы вернуть ваше значение правильно, вы можете:
- Подавить встроенное эхо, записав его в буфер
- Установить результат буфера в переменную
- Запустите ваш второй debug_zval_dump () для этой (не NULL) переменной
Вот как это работает:
function myfunc($foo)
{
debug_zval_dump($foo, 1);
}
ob_start();
/*
starts the output buffer which will catch all code instead of echoing it to page
*/
myfunc('Mouse configuration');
$v = ob_get_contents();
/*
writes the buffer which contains your f(x) results to a var
*/
ob_end_clean();//clears the buffer
debug_zval_dump($v);//will echo non-null value
Код будет с таким:
string (65) "string (19)" Конфигурация мыши "refcount (3) long (1) refcount (1)" refcount (2)
Я понятия не имею, для чего предназначен этот код, но, в любом случае, удачи. :)