7

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

请参阅以下示例:( 在此处输入图像描述 使用 dBug 组件创建的示例图像可在http://dbug.ospinto.com/ 获得

我做了3个例子:

  1. 资源:这是 MySQL 资源的典型表示,可视化为网格
  2. 对象:从数组中手工创建的对象
  3. 数组:手工制作的多维数组

如您所见,资源是一种视觉美感,而对象和数组是使用多维数组构造的,使用较差的数字数组索引将它们绑定在一起:(

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

$resource_var = (resource) $array_var;
4

4 回答 4

9

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

$resource_var = (resource) $array(var)

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

$resource = array_resource_create($array);

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

于 2012-08-24T14:28:31.357 回答
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);
于 2015-07-02T16:06:41.580 回答
1

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

PHP 的意思resource是变量实际上并不保存 PHP 中的数据,而是一个指针或引用,可由一些较低级别的代码模块使用——在这种情况下,一个数据库库可以使用该引用来检索结果执行的查询。

如果您只是希望漂亮打印看起来与具有类似 DB-resultset 结构的数组相似,那么您应该简单地修改漂亮打印函数来做到这一点 - 您不需要对数组本身做任何事情。

于 2012-08-24T14:32:06.033 回答
0

资源是一种特殊类型。资源特定于外部源。因此,倒退是不可能的。

从理论上讲,具有资源实例的接口将有助于管理类型 - 但这只是胡说八道的理论讨论,在 PHP 中是不可能的。

于 2017-02-23T09:15:09.983 回答