为了账号安全,请及时绑定邮箱和手机立即绑定

关于ini_get php手册的例子?

关于ini_get php手册的例子?

错过了年华 2017-04-19 16:49:48
<?php  /* 我们的 php.ini 包含了以下的设置: display_errors = On register_globals = Off post_max_size = 8M */  echo  'display_errors = '  .  ini_get ( 'display_errors' ) .  "\n" ; echo  'register_globals = '  .  ini_get ( 'register_globals' ) .  "\n" ; echo  'post_max_size = '  .  ini_get ( 'post_max_size' ) .  "\n" ; echo  'post_max_size+1 = '  . ( ini_get ( 'post_max_size' )+ 1 ) .  "\n" ; echo  'post_max_size in bytes = '  .  return_bytes ( ini_get ( 'post_max_size' )); function  return_bytes ( $val ) {      $val  =  trim ( $val );      $last  =  strtolower ( $val [ strlen ( $val )- 1 ]);     switch( $last ) {          // 自 PHP 5.1.0 起可以使用修饰符 'G'          case  'g' :              $val  *=  1024 ;         case  'm' :              $val  *=  1024 ;         case  'k' :              $val  *=  1024 ;     }     return  $val ; } /*输出为以下内容 display_errors =  register_globals =  post_max_size = 8M post_max_size+1 = 9 post_max_size in bytes = M */  ?>1.  "post_max_size+1"这个变量为什么会是9?难道字符串与整型相加字母会自动转为0?2.  注释掉switch语句后,$last为什么会输出m? 3.  $last  =  strtolower ( $val [ strlen ( $val )- 1 ]);    为什么$val是[strlen ( $val )- 1],而不是(strlen ( $val )- 1)?[],()这两种括号有什么区别?
查看完整描述

1 回答

已采纳
?
qq_青枣工作室_0

TA贡献446条经验 获得超754个赞

1. 你的post_max_size="8M", 跟数字相加时,会尝试把字符串转为数字,并且只转字符串的前面数字部分,所以就把"8M"转为8了。8+1=9。

2. 注释掉switch,$val值没修改,原样输出"8M"

3. 字符串可以像数组那样,通过索引来获取单个字符。$val[strlen($val)-1],就是获取$val的最后一个字符,"8M"的最后一个字符就是"M"。

而你说的$val(...)是函数调用的语法,调用$val这个函数。但这里$val并不是函数。

查看完整回答
1 反对 回复 2017-04-20
  • 错过了年华
    错过了年华
    post_max_size in bytes不是等于8m*1024吗? 为什么会输出m?
  • qq_青枣工作室_0
    qq_青枣工作室_0
    那是你自己看错了吧。再测试一下,输出的是:post_max_size in bytes = 8388608。那个switch语句的case是没有用break的,所以,case 'm'时,会把case 'k'的也执行,就是两次$val*=1024。
  • 错过了年华
    错过了年华
    差点没看到这条回复。。。 忘了,没加break是会全部执行。 谢谢了。
  • 1 回答
  • 0 关注
  • 1102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信