php将数组输出成php源代码将php源代码执行并返回给php变量

by 少年2021-08-18
  • 0 赞
  • 0 收藏
  • 技术
  • 348 评论
  • 3841 阅读
© 本文 by 少年 版权所有,作者未对本笔记声明转载限制,转载时请注明本文标题和链接。
笔记

有些时候我们写php时可能会遇到需要直接输出源代码时候,特别是数组,这个时候我们时候使用php的系统函数即可实现


php将数组输出成php源代码


我们都知道php输出有each、print、print_r、printf、sprintf、var_dump等输出函数和语句;


each()


echo() 实际上不是一个函数,是php语句,因此其后的括号不是必须的,你也不能将它赋值给其他变量,如:

$a=echo('a');

这种写法是错误的,echo不能用来赋值 ,其返回值为void,或者说其并无返回值;

echo 带括号输出时只能接收一个参数,不带括号输出可以接收多个参数,参数用逗号隔开,输出时会忽略字符串中的换行;

echo 输出字符串使用双引号可以解析字符串中的变量,使用单引号时字符串中的变量不会被替换成变量值,而是将变量名作为字符串直接输出。


print()


print() 和 echo() 用法一样,但是echo速度会比print快一点点。实际上它也不是一个函数,因此您无需对其使用括号。不过,如果您希望向print() 传递一个以上的参数,那么使用括号会发生解析错误。注意print总是返回1的,这个和echo不一样,也就是可以使用print来赋值,不过没有实际意义。


print_r()


print_r函数打印关于变量的易于理解的信息。如果变量是string、integer或float , 将会直接输出其值,如果变量是一个数组,则会输出一个格式化后的数组,便于阅读,也就是有key和value对应的那种格式。对于object对象类同。print_r有两个参数,第一个是变量,第二个可设为true,如果设为true,则会返回字符串不再输出结果,否则返回布尔值TRUE。


printf()


printf函数返回一个格式化后的字符串,这函数说白了,它就是C语言的printf,格式输出,就不做介绍了。


sprintf()


sprintf函数使用方法和printf一样,唯一不同的就是该函数把格式化的字符串写写入一个变量中,而不是输出来。


var_dump()


功能: 输出变量的内容、类型或字符串的内容、类型、长度。常用来调试


你会发现以上函数都没涉及到到输出成源代码,print_r输出数组虽然格式正确,但他缺少逗号分隔符,不能直接使用,总不能自己写个自定义函数处理吧,这方法虽然可行但是比较麻烦;别急,php为我们提供了系统函数,它就是var_export,虽然用到的非常少,但还是非常实用的。


var_export


var_export() 函数用于输出或返回一个变量,以字符串形式表示;

var_export()函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的是一个合法的 PHP 代码;

他有两个参数,第一个是要输出的变量,第二个参数默认false 输出合法的 PHP 代码,如果设置为 TRUE,该函数不会执行输出结果,而且将输出结果返回给一个变量;

例:

<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export ($a);
?>
//输出结果
array (
  0 => 1,
  1 => 2,
  2 => 
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)


将php源代码执行并返回给php变量


如果我们获取到上边的源代码怎么把它赋值给一个变量呢?这时我们需要用到一个函数eval


eval()


eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。


看到函数介绍,可以执行字符串代码,这时我们就可以这样操作了


<?php
$a = array (1, 2, array ("a", "b", "c"));
$str = var_export ($a,TRUE);
$arr = eval("return $str;");
?>

这样$arr就获取到了代码执行后的结果,实际生产种,转换可执行字符串代码和字符串代码执行赋值给变量肯定是分开的。这里只是演示效果。

注意eval里面的return不能省略,而var_export 返回的字符串没有分号结束符,所以需要后边添加分号。


ok,操作结束。

---

TAG: php
评论
Rtaews
oral sildenafil 100mg order sildalis online generic estradiol 2mg

2022-12-08 14:45:54回复

floowTalA
Adherence varied according to specific symptom experienced cheap clomid in the usa Anvarol anavar, clenbutrol clenbuterol trenorol trenbolone for crazy results what is it

2022-12-08 12:03:06回复

RobertNeaph
Wow plenty of beneficial facts. legitimate canada pharmacy cdl and prescription drugs good canadian pharmacy pharmacy job in canada vipps canadian pharmacy list buy veterinary drugs online canada https://canadianpharmacylist.com/ how to write a research paper youtube

2022-12-08 11:00:04回复

Davidvoike
Amazing facts, Thank you! silk road online pharmacy prescription drugs canada new drugs for ed

2022-12-08 02:10:43回复

AlbertoVef
You've made your point. marijuana vs prescription drugs pharmacies in canada that ship to the us pharmacy intern pharmacy online stores lisinopril online canadian pharmacy walgreens pharmacy store location https://canadapharmacyspace.com/ project management thesis

2022-12-07 08:54:22回复

12345678 ... 70(有 348 条评论)