广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >echo在php中什么意思
  • 304
分享到

echo在php中什么意思

2023-06-15 08:06:59 304人浏览 安东尼
摘要

这篇文章主要介绍了echo在PHP中什么意思,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。1、概述echo 作为php中的语言结构, 经常会被使用, 因此了解他的实现还是有必要的.版本源码地址PHP-7.2.8https

这篇文章主要介绍了echo在PHP中什么意思,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。

1、概述

echo 作为php中的语言结构, 经常会被使用, 因此了解他的实现还是有必要的.

版本源码地址
PHP-7.2.8https://GitHub.com/php/php-src/tree/PHP-7.2.8/

2、官方文档(php.net)

2.1 输出一个或多个字符串

void echo ( string $arg1 [, string $... ] )
  • 文档地址:Http://php.net/manual/zh/function.echo.php

2.2 说明

echo 不是一个函数,是一个PHP的语言结构,因此不一定要使用小括号来指明参数,单引号、双引号都行.echo 不表现得像一个函数,所以不能总是使用一个函数的上下文。echo 输出多个字符串的时候, 不能使用小括号。echo 在php.ini中启用 short_open_tag 时,有一个快捷用法(view层)<?= 'Hello World'; ?>echoprint 最主要的不同之处是, echo 接受参数列表,并且没有返回值。

2.3 注释

Note: 因为是一个语言构造器而不是一个函数,不能被 可变函数 调用。

<?phpecho "Sum: ", 1 + 2;echo "Hello ", isset($name) ? $name : "John Doe", "!";echo 'Sum: ' . (1 + 2);echo 'Hello ' . (isset($name) ? $name : 'John Doe') . '!';

3、应用

3.1 输出基本数据类型

echo 123, 'abc', [12, 34];  // 123abcArrayecho "Sum: ", 1 + 2; // Sum: 3echo 'Sum: ' . (1 + 2); // Sum: 3echo "Hello ", isset($name) ? $name : "John Doe", "!"; // Hello John Doe!echo 'Hello ' . (isset($name) ? $name : 'John Doe') . '!'; // Hello John Doe!

3.2 输出对象类型

<?php class Customer {    public function say() {        return 'Hello World';    }}echo (new Customer());

Catchable fatal error: Object of class Customer could not be converted to string in /usercode/file.php on line 8

输出对象时汇报以上错误, 所以如果需要输出对象, 一定要在其内部实现 __toString()

<?php class Customer {    public function say() {        return 'Hello World';    }            public function __toString(){        return $this->say();    }}echo (new Customer()); // Hello World

3.3 输出资源类型

echo tmpfile(); // Resource id #1

4、源码

4.1 源码概述

php 是一门脚本语言, 所以所有的符号都会先经过词法解析和语法解析阶段, 这两个阶段由lex & yacc 完成。

在计算机科学里面,lex是一个产生词法分析器的程序。 Lex常常与yacc 语法分析器产生程序一起使用。Lex是许多UNIX系统的标准词法分析器产生程序,而且这个工具所作的行为被详列为POSIX标准的一部分。 Lex读进一个代表词法分析器规则的输入字符串流,然后输出以C语言实做的词法分析器源代码。 --维基百科

对应的文件在 Zend/zend_language_parser.yZend/zend_language_scanner.l

4.2 字符转标记(Zend/zend_language_scanner.l)

<ST_IN_SCRIPTING>"echo" {RETURN_TOKEN(T_ECHO);}

ZEND引擎在读取一个PHP文件之后会先进行词法分析,就是用lex扫描,把对应的PHP字符转换成相应的标记(也叫token),比如 echo $a; 在碰到这句首先会匹配到echo,符合上面的规则,然后就返回一个 T_ECHO 标记,这个在后面的语法分析会用上,也就是在 zend_language_parser.y 文件中

4.3 语法分析(Zend/zend_language_parser.y)

# %token Token就是一个个的“词块”%token T_ECHO       "echo (T_ECHO)"# statement T_ECHO echo_expr_liststatement:'{' inner_statement_list '}' { ? = $2; }|if_stmt { ? = $1; }|alt_if_stmt { ? = $1; }|T_WHILE '(' expr ')' while_statement{ ? = zend_ast_create(ZEND_AST_WHILE, $3, $5); }|T_DO statement T_WHILE '(' expr ')' ';'{ ? = zend_ast_create(ZEND_AST_DO_WHILE, $2, $5); }|T_FOR '(' for_exprs ';' for_exprs ';' for_exprs ')' for_statement{ ? = zend_ast_create(ZEND_AST_FOR, $3, $5, $7, $9); }|T_SWITCH '(' expr ')' switch_case_list{ ? = zend_ast_create(ZEND_AST_SWITCH, $3, $5); }|T_BREAK optional_expr ';'{ ? = zend_ast_create(ZEND_AST_BREAK, $2); }|T_CONTINUE optional_expr ';'{ ? = zend_ast_create(ZEND_AST_CONTINUE, $2); }|T_RETURN optional_expr ';'{ ? = zend_ast_create(ZEND_AST_RETURN, $2); }|T_GLOBAL global_var_list ';'{ ? = $2; }|T_STATIC static_var_list ';'{ ? = $2; }|T_ECHO echo_expr_list ';'{ ? = $2; }|T_INLINE_html { ? = zend_ast_create(ZEND_AST_ECHO, $1); }|expr ';' { ? = $1; }|T_UNSET '(' unset_variables ')' ';' { ? = $3; }|T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement{ ? = zend_ast_create(ZEND_AST_FOREACH, $3, $5, NULL, $7); }|T_FOREACH '(' expr T_AS foreach_variable T_DOUBLE_ARROW foreach_variable ')'foreach_statement{ ? = zend_ast_create(ZEND_AST_FOREACH, $3, $7, $5, $9); }|T_DECLARE '(' const_list ')'{ zend_handle_encoding_declaration($3); }declare_statement{ ? = zend_ast_create(ZEND_AST_DECLARE, $3, $6); }|';' { ? = NULL; }|T_TRY '{' inner_statement_list '}' catch_list finally_statement{ ? = zend_ast_create(ZEND_AST_TRY, $3, $5, $6); }|T_THROW expr ';' { ? = zend_ast_create(ZEND_AST_THROW, $2); }|T_GoTO T_STRING ';' { ? = zend_ast_create(ZEND_AST_GOTO, $2); }|T_STRING ':' { ? = zend_ast_create(ZEND_AST_LABEL, $1); };

statement 看到了 T_ECHO, 后面跟着 echo_expr_list,再搜这个字符串,找到如下代码:

# echo_expr_listecho_expr_list:    echo_expr_list ',' echo_expr { ? = zend_ast_list_add($1, $3); }  | echo_expr { ? = zend_ast_create_list(1, ZEND_AST_STMT_LIST, $1); };echo_expr:  expr { ? = zend_ast_create(ZEND_AST_ECHO, $1); };expr:    variable              { ? = $1; }  | expr_without_variable { ? = $1; };

词法分析后得到单独存在的词块不能表达完整的语义,还需要借助规则进行组织串联。语法分析器就是这个组织者。它会检查语法、匹配Token,对Token进行关联。PHP7中,组织串联的产物就是抽象语法树(Abstract Syntax TreeAST), 详情请查看相关源码: 抽象语法树(Abstract Syntax Tree,AST)

这么看比较难理解,接下来我们从一个简单的例子看下最终生成的语法树。

$a = 123;$b = "hi~";echo $a,$b;

具体解析过程这里不再解释,有兴趣的可以翻下zend_language_parse.y中,这个过程不太容易理解,需要多领悟几遍,最后生成的ast如下图:

echo在php中什么意思

4.4 模块初始化(main/main.c)

通过 write_function 绑定PHP输出函 数php_output_wrapperzend_utility_functions结构体, 此结构体会在xx被使用

# php_module_startupzend_utility_functions zuf;// ...GC_globals_ctor();zuf.error_function = php_error_cb;zuf.printf_function = php_printf;zuf.write_function = php_output_wrapper;zuf.fopen_function = php_fopen_wrapper_for_zend;zuf.message_handler = php_message_handler_for_zend;zuf.get_configuration_directive = php_get_configuration_directive_for_zend;zuf.ticks_function = php_run_ticks;zuf.on_timeout = php_on_timeout;zuf.stream_open_function = php_stream_open_for_zend;zuf.printf_to_smart_string_function = php_printf_to_smart_string;zuf.printf_to_smart_str_function = php_printf_to_smart_str;zuf.getenv_function = sapi_getenv;zuf.resolve_path_function = php_resolve_path_for_zend;zend_startup(&zuf, NULL);

zuf 是一个 zend_utility_functions 结构体,这样就把php_output_wrapper函数传给了zuf.write_function,后面还有好几层包装,最后的实现也是在main/main.c文件里面实现的,是下面这个函数:

static size_t php_output_wrapper(const char *str, size_t str_length){return php_output_write(str, str_length);}

php_out_wrapper 中调用的 php_output_writemain/output.c 中实现, 实现代码如下:

PHPAPI size_t php_output_write(const char *str, size_t len){if (OG(flags) & PHP_OUTPUT_ACTIVATED) {php_output_op(PHP_OUTPUT_HANDLER_WRITE, str, len);return len;}if (OG(flags) & PHP_OUTPUT_DISABLED) {return 0;}return php_output_direct(str, len);}

4.5 输出的终点(main/output.c fwrite函数)

不调用sapi_module的输出

static size_t (*php_output_direct)(const char *str, size_t str_len) = php_output_stderr;static size_t php_output_stderr(const char *str, size_t str_len){fwrite(str, 1, str_len, stderr);#ifdef PHP_WIN32fflush(stderr);#endifreturn str_len;}

调用sapi_module的输出

sapi_module.ub_write(context.out.data, context.out.used);if (OG(flags) & PHP_OUTPUT_IMPLICITFLUSH) {sapi_flush();}

php_output_op 详细实现如下:

static inline void php_output_op(int op, const char *str, size_t len){php_output_context context;php_output_handler **active;int obh_cnt;if (php_output_lock_error(op)) {return;}php_output_context_init(&context, op);if (OG(active) && (obh_cnt = zend_stack_count(&OG(handlers)))) {context.in.data = (char *) str;context.in.used = len;if (obh_cnt > 1) {zend_stack_apply_with_argument(&OG(handlers), ZEND_STACK_APPLY_TOPDOWN, php_output_stack_apply_op, &context);} else if ((active = zend_stack_top(&OG(handlers))) && (!((*active)->flags & PHP_OUTPUT_HANDLER_DISABLED))) {php_output_handler_op(*active, &context);} else {php_output_context_pass(&context);}} else {context.out.data = (char *) str;context.out.used = len;}if (context.out.data && context.out.used) {php_output_header();if (!(OG(flags) & PHP_OUTPUT_DISABLED)) {#if PHP_OUTPUT_DEBUGfprintf(stderr, "::: sapi_write('%s', %zu)\n", context.out.data, context.out.used);#endifsapi_module.ub_write(context.out.data, context.out.used);if (OG(flags) & PHP_OUTPUT_IMPLICITFLUSH) {sapi_flush();}OG(flags) |= PHP_OUTPUT_SENT;}}php_output_context_dtor(&context);}

以上了解了PHP输出函数的实现, 接下来了解echo实现.

4.6 输出动作的ZEND引擎实现(Zend/zend_vm_def.h)

ZEND_VM_HANDLER(40, ZEND_ECHO, CONST|TMPVAR|CV, ANY){USE_OPLINEzend_free_op free_op1;zval *z;SAVE_OPLINE();z = GET_OP1_ZVAL_PTR_UNDEF(BP_VAR_R);if (Z_TYPE_P(z) == IS_STRING) {zend_string *str = Z_STR_P(z);if (ZSTR_LEN(str) != 0) {zend_write(ZSTR_VAL(str), ZSTR_LEN(str));}} else {zend_string *str = _zval_get_string_func(z);if (ZSTR_LEN(str) != 0) {zend_write(ZSTR_VAL(str), ZSTR_LEN(str));} else if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {GET_OP1_UNDEF_CV(z, BP_VAR_R);}zend_string_release(str);}FREE_OP1();ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();}

可以看到在 zend vm 中通过调用zend_write来实现输出,接下来看下zend_write的实现。

4.7 zend_write实现(Zend/zend.c)

# Zend/zend.htypedef int (*zend_write_func_t)(const char *str, size_t str_length);# Zend/zend.cZEND_API zend_write_func_t zend_write;# 如下图所示, zend_write的初始化是在zend_startup()函数里面,这是zend引擎启动的时候需要做的一些初始化工作,有下面一句:zend_write = (zend_write_func_t) utility_functions->write_function; // php_output_wrapper

zend_utility_functions *utility_functionsmain/main.c php_module_startup()zuf中被定义:

zuf.write_function = php_output_wrapper;

echo在php中什么意思

5、php(echo)加速

5.1 PHP echo 真的慢么?

echo在php中什么意思

echo 输出大字符串(500K)的时候,执行时间会明显变长,所以会被认为PHP的echo性能很差, 实际上这并不是语言(PHP)问题, 而是一个IO问题(IO的速度限制了输出的速度)。

但是在某些时候echo执行时间过长, 会影响其他的服务, 进而影响整个系统。

那么使用 apache 时如何优化使的 echo 变快, 让PHP的请求处理过程尽快结束?

5.2 还是可以优化的: 打开输出缓存

echo慢是在等待“写数据”成功返回, 所以可打开输出缓存

# 编辑php.iNIOutput_buffering = 4096 //bytes# 调用ob_start()ob_start();echo $hugeString;ob_end_flush();

ob_start() 会开辟一块4096大小的buffer,所以如果 $hugeString 大于 4096,将不会起到加速作用。

echo 会立即执行成功返回, 因为数据暂时写到了我们的输出缓存中,如果buffer足够大,那么内容会等到脚本的最后,才一次性的发送给客户端(严格的说是发给WEBserver)。

6、输出时的类型转换

6.1 输出时的类型转换规则

inputoutputdesccode
BooleanString1 或 0echo true; // 1
IntegerInteger不转换echo 123; // 123
FloatFloat不转换, 注意精度问题echo 123.234; // 123.234
StringString不转换echo 'abcd'; // abcd
ArrayArray-echo [12, 34]; // Array
ObjectCatchable fatal errorObject of class stdClass could not be converted to string in file.php on line *echo JSON_decode(json_encode(['a' => 'b']));
ResourceResource id #1-echo tmpfile(); // Resource id #1
NULLstring转为空字符串echo null; // 空字符串

6.2 输出时的类型转换源码(Zend/zend_operators.h & Zend/zend_operators.c)

# Zend/zend_operators.hZEND_API zend_string* ZEND_FASTCALL _zval_get_string_func(zval *op);# Zend/zend_operators.cZEND_API zend_string* ZEND_FASTCALL _zval_get_string_func(zval *op) {try_again:switch (Z_TYPE_P(op)) {case IS_UNDEF:case IS_NULL:case IS_FALSE:return ZSTR_EMPTY_ALLOC();case IS_TRUE:if (CG(one_char_string)['1']) {return CG(one_char_string)['1'];} else {return zend_string_init("1", 1, 0);}case IS_RESOURCE: {char buf[sizeof("Resource id #") + MAX_LENGTH_OF_LONG];int len;len = snprintf(buf, sizeof(buf), "Resource id #" ZEND_LONG_FMT, (zend_long)Z_RES_HANDLE_P(op));return zend_string_init(buf, len, 0);}case IS_LONG: {return zend_long_to_str(Z_LVAL_P(op));}case IS_DOUBLE: {return zend_strpprintf(0, "%.*G", (int) EG(precision), Z_DVAL_P(op));}case IS_ARRAY:zend_error(E_NOTICE, "Array to string conversion");return zend_string_init("Array", sizeof("Array")-1, 0);case IS_OBJECT: {zval tmp;if (Z_OBJ_HT_P(op)->cast_object) {if (Z_OBJ_HT_P(op)->cast_object(op, &tmp, IS_STRING) == SUCCESS) {return Z_STR(tmp);}} else if (Z_OBJ_HT_P(op)->get) {zval *z = Z_OBJ_HT_P(op)->get(op, &tmp);if (Z_TYPE_P(z) != IS_OBJECT) {zend_string *str = zval_get_string(z);zval_ptr_dtor(z);return str;}zval_ptr_dtor(z);}zend_error(EG(exception) ? E_ERROR : E_RECOVERABLE_ERROR, "Object of class %s could not be converted to string", ZSTR_VAL(Z_OBJCE_P(op)->name));return ZSTR_EMPTY_ALLOC();}case IS_REFERENCE:op = Z_REFVAL_P(op);goto try_again;case IS_STRING:return zend_string_copy(Z_STR_P(op));EMPTY_SWITCH_DEFAULT_CASE()}return NULL;}

7、Zend/zend_compile.c对echo的解析

7.1 源码地址

  • PHP源码地址 zend_compile.h

  • PHP源码地址 zend_compile.c

7.2 zend_compile_expr 实现

# Zend/zend_compile.hvoid zend_compile_expr(znode *node, zend_ast *ast);# Zend/zend_compile.cvoid zend_compile_expr(znode *result, zend_ast *ast) {CG(zend_lineno) = zend_ast_get_lineno(ast);switch (ast->kind) {case ZEND_AST_ZVAL:ZVAL_COPY(&result->u.constant, zend_ast_get_zval(ast));result->op_type = IS_CONST;return;case ZEND_AST_ZNODE:*result = *zend_ast_get_znode(ast);return;case ZEND_AST_VAR:case ZEND_AST_DIM:case ZEND_AST_PROP:case ZEND_AST_STATIC_PROP:case ZEND_AST_CALL:case ZEND_AST_METHOD_CALL:case ZEND_AST_STATIC_CALL:zend_compile_var(result, ast, BP_VAR_R);return;case ZEND_AST_ASSIGN:zend_compile_assign(result, ast);return;case ZEND_AST_ASSIGN_REF:zend_compile_assign_ref(result, ast);return;case ZEND_AST_NEW:zend_compile_new(result, ast);return;case ZEND_AST_CLONE:zend_compile_clone(result, ast);return;case ZEND_AST_ASSIGN_OP:zend_compile_compound_assign(result, ast);return;case ZEND_AST_BINARY_OP:zend_compile_binary_op(result, ast);return;case ZEND_AST_GREATER:case ZEND_AST_GREATER_EQUAL:zend_compile_greater(result, ast);return;case ZEND_AST_UNARY_OP:zend_compile_unary_op(result, ast);return;case ZEND_AST_UNARY_PLUS:case ZEND_AST_UNARY_MINUS:zend_compile_unary_pm(result, ast);return;case ZEND_AST_AND:case ZEND_AST_OR:zend_compile_short_circuiting(result, ast);return;case ZEND_AST_POST_INC:case ZEND_AST_POST_DEC:zend_compile_post_incdec(result, ast);return;case ZEND_AST_PRE_INC:case ZEND_AST_PRE_DEC:zend_compile_pre_incdec(result, ast);return;case ZEND_AST_CAST:zend_compile_cast(result, ast);return;case ZEND_AST_CONDITIONAL:zend_compile_conditional(result, ast);return;case ZEND_AST_COALESCE:zend_compile_coalesce(result, ast);return;case ZEND_AST_PRINT:zend_compile_print(result, ast);return;case ZEND_AST_EXIT:zend_compile_exit(result, ast);return;case ZEND_AST_YIELD:zend_compile_yield(result, ast);return;case ZEND_AST_YIELD_FROM:zend_compile_yield_from(result, ast);return;case ZEND_AST_INSTANCEOF:zend_compile_instanceof(result, ast);return;case ZEND_AST_INCLUDE_OR_EVAL:zend_compile_include_or_eval(result, ast);return;case ZEND_AST_ISSET:case ZEND_AST_EMPTY:zend_compile_isset_or_empty(result, ast);return;case ZEND_AST_SILENCE:zend_compile_silence(result, ast);return;case ZEND_AST_shell_EXEC:zend_compile_shell_exec(result, ast);return;case ZEND_AST_ARRAY:zend_compile_array(result, ast);return;case ZEND_AST_CONST:zend_compile_const(result, ast);return;case ZEND_AST_CLASS_CONST:zend_compile_class_const(result, ast);return;case ZEND_AST_ENCAPS_LIST:zend_compile_encaps_list(result, ast);return;case ZEND_AST_MAGIC_CONST:zend_compile_magic_const(result, ast);return;case ZEND_AST_CLOSURE:zend_compile_func_decl(result, ast);return;default:ZEND_ASSERT(0 );}}

7.3 zend_compile_echo 实现

# Zend/zend_compile.cvoid zend_compile_echo(zend_ast *ast) {zend_op *opline;zend_ast *expr_ast = ast->child[0];znode expr_node;zend_compile_expr(&expr_node, expr_ast);opline = zend_emit_op(NULL, ZEND_ECHO, &expr_node, NULL);opline->extended_value = 0;}

以上就是echo在php中什么意思的详细内容了,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎来编程网PHP编程!

--结束END--

本文标题: echo在php中什么意思

本文链接: https://www.lsjlt.com/news/278840.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • echo在php中什么意思
    这篇文章主要介绍了echo在php中什么意思,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。1、概述echo 作为PHP中的语言结构, 经常会被使用, 因此了解他的实现还是有必要的.版本源码地址PHP-7.2.8https...
    99+
    2023-06-15
  • php中echo是什么意思
    PHP中的echo是一种用于输出内容的语句,可以将变量、字符串、HTML标记以及其他数据类型输出到浏览器端或其他输出设备上。在PHP中,echo语句可以与HTML标记混合使用,用于动态生成HTML页面或Web应用程序。使用echo语句可以方...
    99+
    2023-05-14
    php
  • echo在linux里是什么意思
    在Linux系统中,echo是一个命令,用于在终端上显示文本或变量的值。它通常用于脚本中,用于输出信息、变量的值等。可以使用echo...
    99+
    2023-08-25
    linux
  • php里面的echo是什么意思
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php里面的echo是什么意思?PHP里的ECHO是一种输出字符串的语法或函数,当后面直接跟随空格和字符串时是语法,如“echo 'php';”,函数使用...
    99+
    2018-02-19
    php echo
  • 在php中-= 是什么意思
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑首先要知道在 PHP 中,基本的赋值运算符是 "="。它意味着左操作数被设置为右侧表达式的值。也就是说,"$x = 5" 的值是 ...
    99+
    2020-09-14
    -= php
  • slim在php中是什么意思
    slim是一款轻量级的微型PHP框架,可以帮助PHP开发者快速编写简单但功能强大的RESTful web应用和API。Slim框架的特性:1、提供了一个快速而强大的路由器,可以将路由回调映射到特定的HTTP请求方法和URI;2、用同心中间件...
    99+
    2022-06-28
    php
  • substr在php中是什么意思
    substr在PHP中是“截取字符串”的意思;substr()函数能够返回字符串的一部分,语法为“substr(string,start,length)”,参数string表示要返回其中一部分的字符串,参数start用于...
    99+
    2022-06-30
    php
  • 在php中$_GET是什么意思
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在php中,“$_GET”的意思为获取GET数据,它是一个预定义变量,主要用来接收form表单中使用GET方法提交的表单数据。GET 方法是 form 表单中 meth...
    99+
    2014-05-09
    $_GET php
  • miltiply在php中是什么意思
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。miltiply在php中是什么意思?如果这个词出现在PHP库函数中,multiply通常代表“乘法”;如果是自定义的,要看作者的意图和是否用词得当。比如:PHP实现...
    99+
    2022-11-08
  • var在php什么意思
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑var在php什么意思?定义的字符串变量名var表示variable变量的意思php中var关键字用法见很多朋友说在php中定义变量用不用var都没关系,其实不然。看看例...
    99+
    2014-11-21
    var php
  • php中.=什么意思
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php中.=什么意思?PHP中 .= 的意思: .= 在php中是字符串连接的意思例如:  $a = 'a';   $a .= 'bc';...
    99+
    2021-04-11
    php
  • PHP中feof 什么意思
    本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。PHP中feof 什么意思?feof() 函数检测是否已到达文件末尾 (eof)。如果文件指针到了 EOF 或者出错时则返回 TRUE,否则返回一个错误(包括 socke...
    99+
    2018-11-12
    PHP feof
  • php中const什么意思
    本文操作环境:Windows7系统、PHP7.1、Dell G3。php中const什么意思php中的const是用于定义一个常量的一种关键字。可以使用 const 关键字或 define() 函数两种方法来定义一个常量。函数 define...
    99+
    2016-11-03
    php const
  • php中=是什么意思
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑php中=是什么意思?PHP 中基础的赋值运算符是 "="。这意味着右侧赋值表达式会为左侧运算数设置值。如 z=x+y,右侧表达式为左侧运算数设置值。...
    99+
    2021-07-01
    php
  • php中fetch什么意思
    本文操作环境:Windows7系统、PHP7.4版、DELL G3电脑php中fetch什么意思 php中的fetch指的是查询数据的fetch方法。PHP 常用的四个fetch的区别在php中,经常使用mysqli_fetch从数据库返回...
    99+
    2016-10-27
    php fetch
  • php中strsplt什么意思
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在php中,strsplt指的是str_split()函数,意思为分割字符串。str_split()函数可以分割字符串,将字符串拆分成指定长度的子串,并将子串一个个传入...
    99+
    2022-02-17
    php str_split
  • php 中query什么意思
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php 中query什么意思mysql_query() 函数执行一条 MySQL 查询。语法mysql_query(query,connection)登录后复制描述q...
    99+
    2022-10-21
  • php += .= 什么意思
    本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。php += .= 什么意思?看一下式子:x += y 相当于 x = x + y ,表示 加; a .= b 相当于 a = a . b ,表示连接两个字...
    99+
    2018-05-20
    php
  • php什么意思
    PHP即超文本预处理器,是指一种通用开源脚本语言,主要适用于Web开发领域,也可以用于开发API接口,能够实现所有的CGI的功能,具有成本低、速度快、可移植性好、内置丰富的函数库等优点,几乎支持所有流行的数据库以及操作系统,与C语言类似,是...
    99+
    2022-10-21
  • 在php mysql中__file__属性是什么意思
    本教程操作环境:windows7系统、PHP7.1&&mysql8版、DELL G3电脑“__file__”是一个魔术常量(系统预定义好的常量),它会返回当前执行PHP脚本的完整路径和文件名,即绝对路径(包含文件名)。自 P...
    99+
    2016-11-25
    php mysql __file__
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作