PHP将数组转换为资源

时间:2012-08-24 14:24:07

标签: php arrays object resources

对于直观表示,为了简单起见,当然也是为了满足我的好奇心,我想知道如何将PHP数组转换为有效的PHP资源。

见下面的例子: enter image description here (在http://dbug.ospinto.com/处可以使用dBug组件创建的示例图像)

我做了三个例子:

  1. resource:这是MySQL资源的典型表示,可视化为网格
  2. object:来自数组的手工创建对象
  3. 数组:手工制作的多维数组
  4. 正如你所看到的,资源是一种视觉美,而对象和数组是通过使用多维数组构建的,使用不良的数字数组索引将它们绑定在一起:(

    我正在寻找的东西可能是这样的:

    $resource_var = (resource) $array_var;
    

4 个答案:

答案 0 :(得分:9)

  

我正在寻找的东西可能是这样的:

$resource_var = (resource) $array(var)

你永远不会找到那个。资源是PHP中的内部数据类型。如果(并且仅当)您自己编写PHP扩展并加载它,您可以执行以下操作:

$resource = array_resource_create($array);

然后,您的PHP扩展将在mysql函数中创建该资源(例如array_resource_create扩展名,例如创建其特定资源类型)。但是,它将毫无用处,因为到目前为止还没有其他功能可以处理该资源。

答案 1 :(得分:2)

您无法创建资源。但你可以使用原生的。

尝试使用curl。

function makeResourceFromArray($array) {

    $resource = curl_init();

    curl_setopt($resource, CURLOPT_PRIVATE, serialize($array));

    return $resource;
}

function makeArrayFromResource($resource) {
    return unserialize(curl_getinfo($resource, CURLINFO_PRIVATE));
}

$resource = makeResourceFromArray(['name' => 'test']);

$array = makeArrayFromResource($resource);

答案 2 :(得分:1)

你在那里显示的输出与它是resource无关,但你正在使用的漂亮打印功能注意到你给它的变量指向数据库结果集,并获取并显示结果。

resource表示PHP的含义是变量实际上并不包含PHP中的数据,而是某些较低级代码模块可用的指针或引用 - 在本例中是一个DB库,可以使用该引用来检索已执行查询的结果。

如果你只是希望漂亮的打印看起来类似于具有类似DB结果集的结构的数组,那么你应该简单地修改漂亮的打印功能 - 你不需要做任何事情来做数组本身。

答案 3 :(得分:0)

资源是一种特殊类型。并且资源特定于外部来源。因此,向后退是不可能的。

理论上,与资源实例的接口将有助于管理类型 - 但这只是在PHP中无法理解的理论说法。