好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

关于longphp的信息

很多站长朋友们都不太清楚longphp,今天小编就来给大家整理longphp,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 时间戳 long 类型 2、 PHP:应该如何将字符串格式化成固定长度呢? 3、 php 将数组中的科学记数法后的字符串转换为LONG类型 4、 PHP中引用数据类型是什么 5、 如何获得一个php变量储存在内存中占用的空间大小 6、 PHP对字符串到整型字段转换的时候长整型的字符串数据长度容易被截断,如何完成String到long类型的转换啊? 时间戳 long 类型

//通常获取时间戳方法time()、strtotime() 他们返回的都是 int 型

//int time ( void ) 

//int strtotime ( string $time [, int $now ] )

echo time() //1403006911

echo(strtotime("now")); //1403006911

PHP:应该如何将字符串格式化成固定长度呢?

$input = "Alien";

echo str_pad($input, 10); // 输出 "Alien "

php 将数组中的科学记数法后的字符串转换为LONG类型

php我是没听过什么long类型,不知道是不是我孤陋了?转化成字符串方法如下

function NumToStr($num){

if (stripos($num,'e')===false) return $num;

$num = trim(preg_replace('/[=\'"]/','',$num,1),'"');//出现科学计数法,还原成字符串

$result = "";

while ($num > 0){

$v = $num - floor($num / 10)*10;

$num = floor($num / 10);

$result = $v . $result;

}

return $result;

}

$arr=array_map("NumToStr","原数组");

PHP中引用数据类型是什么

4种是标量类型:整型、浮点数、字符串和布尔型;两种是复合型:数组和对象;两种特殊类型:资源和NULL。

PHP里的整型和浮点数分别对应着C语言里的long和double类型。

PHP里的字符串是任何长度的字符序列。使用单引号和双引号分隔,但是单引号仅对 \ 和 ' 进行转义。

如何获得一个php变量储存在内存中占用的空间大小

我们在前面的php高效写法提到,尽量不要复制变量,特别是数组。一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1G。下面我们可以粗略的估算PHP数组占用内存的大小,首先我们测试1000个元素的整数占用的内存:

[php] view plain copy print?

<?php

echo memory_get_usage() , '<br>';

$start = memory_get_usage();

$a = Array();

for ($i=0; $i<1000; $i++) {

$a[$i] = $i + $i;

}

$mid = memory_get_usage();

echo memory_get_usage() , '<br>';

for ($i=1000; $i<2000; $i++) {

$a[$i] = $i + $i;

}

$end = memory_get_usage();

echo memory_get_usage() , '<br>';

echo 'argv:', ($mid - $start)/1000 ,'bytes' , '<br>';echo 'argv:',($end - $mid)/1000 ,'bytes' , '<br>';输出是:

353352

437848

522024

argv:84.416bytes

argv:84.176bytes

大概了解1000

个元素的整数数组需要占用 82k 内存,平均每个元素占用 84 个字节。而纯 C 中整体只需要 4k(一个整型占用4byte * 1000)。memory_get_usage() 返回的结果并不是全是被数组占用了,还要包括一些 PHP运行本身分配的一些结构,可能用内置函数生成的数组更接近真实的空间:

[php] view plain copy print?

<?php

$start = memory_get_usage();

$a = array_fill(0, 10000, 1);

$mid = memory_get_usage(); //10k elements array;echo 'argv:', ($mid - $start )/10000,'byte' , '<br>';$b = array_fill(0, 10000, 1);

$end = memory_get_usage(); //10k elements array;echo 'argv:', ($end - $mid)/10000 ,'byte' , '<br>';得到:

argv:54.5792byte

argv:54.5784byte

从这个结果来看似乎一个数组元素大约占用了54个字节左右。

首先看一下32位机C语言各种类型占用的字节:

[cpp] view plain copy print?

#include "stdafx.h"

//#include <stdio.h>

int main() {

printf("int:%d\nlong:%d\ndouble:%d\nchar*:%d\nsize_t:%d\n",sizeof(int), sizeof(long),

sizeof(double), sizeof(char *),

sizeof(size_t));

return 0;

}

int:4

long:4

double:8

har*:4

size_t:4

在PHP中都使用long类型来代表数字,没有使用int类型大家都明白PHP是一种弱类型的语言,它不会去区分变量的类型,没有int float char *之类的概念。

我们看看php在zend里面存储的变量,PHP中每个变量都有对应的 zval, Zval结构体定义在Zend/zend.h里面,其结构:

[cpp] view plain copy print?

typedef struct _zval_struct zval;

struct _zval_struct {

/* Variable information */

zvalue_value value; /* The value 1 12字节(32位机是12,64位机需要8+4+4=16) */zend_uint refcount__gc; /* The number of references to this value (for GC) 4字节 */zend_uchar type; /* The active type 1字节*/zend_uchar is_ref__gc; /* Whether this value is a reference () 1字节*/};

PHP使用一种UNION结构来存储变量的值,即zvalue_value 是一个union,UNION变量所占用的内存是由最大成员数据空间决定。

[cpp] view plain copy print?

typedef union _zvalue_value {

long lval; /* long value */double dval; /* double value */struct { /* string value */char *val;

int len;

} str;

HashTable *ht; /* hash table value */zend_object_value obj; /*object value */} zvalue_value;

最大成员数据空间是struct str,指针占*val用4字节,INT占用4字节,共8字节。

struct zval占用的空间为8+4+1+1 = 14字节,其实呢,在zval中数组,字符串和对象还需要另外的存储结构,数组则是一个 HashTable:

HashTable结构体定义在Zend/zend_hash.h.

[cpp] view plain copy print?

typedef struct _hashtable {

uint nTableSize;//4

uint nTableMask;//4

uint nNumOfElements;//4

ulong nNextFreeElement;//4

Bucket *pInternalPointer; /* Used for element traversal 4*/Bucket *pListHead;//4

Bucket *pListTail;//4

Bucket **arBuckets;//4

dtor_func_t pDestructor;//4

zend_bool persistent;//1

unsigned char nApplyCount;//1

zend_bool bApplyProtection;//1

#if ZEND_DEBUG

int inconsistent;//4

#endif

} HashTable;

HashTable 结构需要 39 个字节,每个数组元素存储在 Bucket 结构中:

[cpp] view plain copy print?

typedef struct bucket {

ulong h; /* Used for numeric indexing 4字节 */uint nKeyLength; /* The length of the key (for string keys) 4字节 */void *pData; /* 4字节*/

void *pDataPtr; /* 4字节*/

struct bucket *pListNext; /* PHP arrays are ordered. This gives the next element in that order4字节*/struct bucket *pListLast; /* and this gives the previous element 4字节 */struct bucket *pNext; /* The next element in this (doubly) linked list 4字节*/struct bucket *pLast; /* The previous element in this (doubly) linked list 4字节*/char arKey[1]; /* Must be last element 1字节*/} Bucket;

Bucket

结构需要 33 个字节,键长超过四个字节的部分附加在 Bucket 后面,而元素值很可能是一个 zval 结构,另外每个数组会分配一个由arBuckets 指向的 Bucket 指针数组, 虽然不能说每增加一个元素就需要一个指针,但是实际情况可能更糟。这么算来一个数组元素就会占用54 个字节,与上面的估算几乎一样。

一个空数组至少会占用 14(zval) + 39(HashTable) + 33(arBuckets) = 86个字节,作为一个变量应该在符号表中有个位置,也是一个数组元素,因此一个空数组变量需要 118个字节来描述和存储。从空间的角度来看,小型数组平均代价较大,当然一个脚本中不会充斥数量很大的小型数组,可以以较小的空间代价来获取编程上的快捷。但如果将数组当作容器来使用就是另一番景象了,实际应用经常会遇到多维数组,而且元素居多。比如10k个元素的一维数组大概消耗540k内存,而10kx 10 的二维数组理论上只需要 6M 左右的空间,但是按照 memory_get_usage的结果则两倍于此,[10k,5,2]的三维数组居然消耗了23M,小型数组果然是划不来的。

PHP对字符串到整型字段转换的时候长整型的字符串数据长度容易被截断,如何完成String到long类型的转换啊?

用这个试试:

sprintf( "%u", $row->playerid);

一般情况下并不需要转换格式,你只需要验证这个字符串($row->playerid)是正确的数字就可以直接进行计算了。php是弱类型的语言,一般情况下直接用就可以。

关于longphp的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于关于longphp的信息的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did207157
更新时间:2023-05-03   阅读:33次

上一篇: php做app开发 php软件开发

下一篇:手机看代码php 手机怎么查看php文件

相关资讯

最新资料更新

  • 1.php蓝色的代码 html颜色代码
  • 2.php怎么使用css php怎么使用数据库锁
  • 3.php函数补全 php自动补全
  • 4.php接口和抽象类的区别 php抽象函数
  • 5.apexphp辅助 apex wr辅助
  • 6.php从事哪个方面 php干啥的
  • 7.php圆形头像代码 php生成圆形图
  • 8.php中文变量问号 php变量使用
  • 9.极路由安装php环境 极路由安装v2ray
  • 10.php在线制作教程 用php技术做的作品
  • 11.jq调用php数据 php100 jquery教程
  • 12.php会做流控吗 php流程控制
  • 13.php是否为post的简单介绍
  • 14.php浏览页面乱码 php页面字符出现乱码怎么解决
  • 15.php调用裁剪插件 phpcrawl
  • 16.零基础php模板 php0基础教程
  • 17.php支付源码 php支付平台
  • 18.php安全验证 php安全问题
  • 19.php文章发布系统 php发布网站
  • 20.如何知道php密码 php确认密码

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]