php extract 与 compact 实现变量与数组的相互转换

compact 多个变量转数组
<?php
    //多个变量转数组
    $name='phpff';
    $email='phpff@phpff.com';
    $info=compact('name','email');//传递变量名
    print_r($info);
    /*
    Array
    (
        [name] => phpff
        [email] => phpff@phpff.com
    )
    */
?>
extract 数组转多个变量
<?php
//数组转多个变量
    $capitalcities['England'] = 'London';
    $capitalcities['Scotland'] = 'Edinburgh';
    $capitalcities['Wales'] = 'Cardiff';
    extract($capitalcities);//转变成三个变量 England,Scotland,Wales
    print $Wales;//Cardiff

?>

php输出函数的执行轨迹

1. debug_backtrace()
该函数返回一个关联数组。包含当前的函数名、行号、文件名、类名、对象、调用类型、函数参数。
例子
<?php
function one($str1, $str2)
 {
 two("Glenn", "Quagmire");
 }
function two($str1, $str2)
 {
 three("Cleveland", "Brown");
 }
function three($str1, $str2)
 {
 print_r(debug_backtrace());
 }

one("Peter", "Griffin");
?>
输出
Array
(
[0] => Array
 (
 [file] => C:\webfolder\test.php
 [line] => 7
 [function] => three
 [args] => Array
  (
  [0] => Cleveland
  [1] => Brown
  )
 )
[1] => Array
 (
 [file] => C:\webfolder\test.php
 [line] => 3
 [function] => two
 [args] => Array
  (
  [0] => Glenn
  [1] => Quagmire
  )
 )
[2] => Array
 (
 [file] => C:\webfolder\test.php
 [line] => 14
 [function] => one
 [args] => Array
  (
  [0] => Peter
  [1] => Griffin
  )
 )
)

2. debug_print_backtrace() 是php5开始支持的,输出 backtrace。比debug_backtrace使用起来方便些。

<?php
function one($str1, $str2)
 {
 two("Glenn", "Quagmire");
 }
function two($str1, $str2)
 {
 three("Cleveland", "Brown");
 }
function three($str1, $str2)
 {
 debug_print_backtrace();
 }

one("Peter", "Griffin");
?>

输出
#0 three(Cleveland, Brown) called at [C:\webfolder\test.php:8]
#1 two(Glenn, Quagmire) called at [C:\webfolder\test.php:4]
#2 one(Peter, Griffin) called at [C:\webfolder\test.php:15]

导出csv文件数字会自动变科学计数法的解决方法

用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软甲查看csv文件时就会变成科学技术法的表现形式。
其实这个问题跟用什么语言导出csv文件没有关系。Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法;如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0。
解决这个问题
只要把数字字段后面加上显示上看不见的字符即可,字符串结尾加上制表符"\t".
php 程序可以这样判断,注意一定是"\t",不是'\t'.
is_numeric($val)?$val."\t":$val;