相关疑难解决方法(0)

如何在php中将整数转换为字节数组

如何将整数转换为4个字节的数组?

这是我想要移植的确切代码(在C#中)

int i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}
Run Code Online (Sandbox Code Playgroud)

我如何在PHP中完成同样的事情?

php bytearray

15
推荐指数
2
解决办法
2万
查看次数

PHP - json_encode生成器对象(使用yield)

我有一个非常大的PHP(5.6)数组,动态生成,我想转换为JSON.问题是数组太大而不适合内存 - 当我尝试处理它(耗尽的内存)时会出现致命的错误.所以我发现,使用发生器,内存问题将消失.

这是我到目前为止尝试过的代码(这个简化示例显然不会产生内存错误):

<?php 
function arrayGenerator()// new way using generators
{
    for ($i = 0; $i < 100; $i++) {
        yield $i;
    }
}

function getArray()// old way, generating and returning the full array
{
    $array = [];
    for ($i = 0; $i < 100; $i++) {
        $array[] = $i;
    }
    return $array;
}

$object = [
    'id' => 'foo',
    'type' => 'blah',
    'data' => getArray(),
    'gen'  => arrayGenerator(),
];

echo json_encode($object);
Run Code Online (Sandbox Code Playgroud)

但PHP似乎没有对生成器中的值进行JSON编码.这是我从previuos脚本得到的输出:

{
    "id": "foo",
    "type": "blah",
    "data": …
Run Code Online (Sandbox Code Playgroud)

php json yield generator

11
推荐指数
1
解决办法
2945
查看次数

存储整数的实际内存开销是多少?

我想说我就是这样做的

$arr = array();
for ($i = 0; $i < 10; $i++) $arr[] = $i;
Run Code Online (Sandbox Code Playgroud)

所以我将10个整数存储在一个数组中.如果整数是32b,则内存开销应为40字节.问题是,我没有告诉php它是一个整数所以它要么必须将其存储为其他东西?(例如,js喜欢制作双打)或者保留额外的数据以提醒自己它是什么?这10个数字+数组实际占用系统内存多少内存?

它很重要,因为我正在尝试评估算法的可行性,我想移植到php并且它在内存上有点沉重.

php php-internals

4
推荐指数
1
解决办法
179
查看次数

标签 统计

php ×3

bytearray ×1

generator ×1

json ×1

php-internals ×1

yield ×1