PHP:强制转换为(数组)和返回类型:数组不一样吗?

2024-07-01

我在 PHP 中遇到以下问题:

print_r()说是一样的gettype()说相同的类型,但最后的输出不适用于这两种情况,尽管它们应该是相同的!

这对我来说看起来很奇怪。

代码和输出:

$docdatau = get_object_vars(json_decode($docdata));
$docdatau2 = (array)json_decode($docdata);

echo "1\n";
echo gettype($docdatau);
echo "\n";
echo "--------------------------------------\n";
print_r($docdatau);
echo "--------------------------------------\n";

echo "2\n";
echo gettype($docdatau2);
echo "\n";
echo "--------------------------------------\n";
print_r($docdatau2);

echo "out1\n";
echo "--------------------------------------\n";
print_r($docdatau[0]);
echo "out2\n";
echo "--------------------------------------\n";
print_r($docdatau2[0]);

输出:

1
array
--------------------------------------
Array
(

    [0] => stdClass Object
        (
            [produkt] => Produkt 2
            [laufzeit] => 24
            [addtext] => sdsd
            [provision] => 39
        )

    [1] => stdClass Object
        (
            [produkt] => Produkt 1
            [laufzeit] => 
            [addtext] => 
            [provision] => 0
        )

)
--------------------------------------
2
array
--------------------------------------

Array
(

    [0] => stdClass Object
        (
            [produkt] => Produkt 2
            [laufzeit] => 24
            [addtext] => sdsd
            [provision] => 39
        )

    [1] => stdClass Object
        (
            [produkt] => Produkt 1
            [laufzeit] => 
            [addtext] => 
            [provision] => 0
        )

)
out1
--------------------------------------
stdClass Object
(
    [produkt] => Produkt 2
    [laufzeit] => 24
    [addtext] => sdsd
    [provision] => 39
)
out2
--------------------------------------
--------------------------------------

out1 and out2应该产生相同的结果,但没有。

也许有人给我一个提示?


有几个 PHP 错误:

  • http://bugs.php.net/bug.php?id=45346 http://bugs.php.net/bug.php?id=45346
  • http://bugs.php.net/bug.php?id=51635 http://bugs.php.net/bug.php?id=51635
  • http://bugs.php.net/bug.php?id=46758 http://bugs.php.net/bug.php?id=46758

同样的事情也发生在这里:

$obj->{0} = "hello";
$arr = (array)$obj;
echo $arr[0];

发生这种情况是因为“0”用作字符串数组键,而 $arr[0] 搜索整数数组键。 PHP 文档中对此进行了简单的说明:整数属性不可访问 (link http://docs.php.net/manual/en/language.types.array.php#language.types.array.casting).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP:强制转换为(数组)和返回类型:数组不一样吗? 的相关文章

  • 下拉列表在 php 中保留先前选择的值

    我在 php 中创建了一个个人资料页面 用户使用 html 下拉列表选择性别 html代码如下 Gender
  • 使用 PHP 连接到 MSSQL Server 2008

    我们在 Windows Server 2008 R2 上使用 MS SQL Server 2008 并已安装Apache 2 2 19 and PHP 5 2 17 分别地 我们已经安装了 PHP 的 MSSQL 模块并使用以下连接字符串
  • 可以用 PHP 设置表单字段值吗?

    我使用 GET 函数从 url http index html variable value 中提取一个带有 php 的值 这是基本的东西 但是 我需要在我的表单中使用该值 通常 我会设置 或类似的东西 但是 我无法使用我正在使用的编辑器在
  • codeigniter 分页错误[重复]

    这个问题在这里已经有答案了 在模型 rci model php中 public function record count return this gt db gt count all produk public function fetc
  • reCaptcha 值未出现在 $_POST 中

    我正在尝试在我的网站上使用 reCaptcha 并且 recaptcha challenge field 和 recaptcha response field 没有添加到后端的 POST 数组中 但我表单中的其余变量是 有任何想法吗 我已经
  • PHP Serialize() ― 规范 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找有关 PHP serial
  • 以同样的方式根据编号对数组进行洗牌

    我正在运行一个测验制作网站 我希望以打乱的顺序向用户显示问题的答案 我试图avoid如果我要随机打乱答案 则存储向用户呈现答案的顺序 我想以可预测的方式打乱答案 这样我以后就可以用同样的方式重复随机播放 显示结果时 我认为我可以按某个数字对
  • symfony2 实体验证正则表达式 a-z A-Z 0-9

    symfony2 中是否有一种内置方法可以根据经典的 a z A Z 和 0 9 规则验证字符串 在我的例子中是用户名和另一个属性 我是否必须自己在正则表达式中编写它作为自定义验证器 如果是这样 请提示在哪里查看 你应该使用原生的正则表达式
  • 如何使用 PHP 在我的安全站点上显示受保护的 Amazon S3 图像?

    我正在尝试将我的网站的图像从我的主机移动到 Amazon S3 云托管 这些图像是客户工作场所的图像 无法公开提供 我希望它们最好通过使用 Amazon 提供的 PHP SDK 来显示在我的网站上 到目前为止 我已经能够编写转换脚本 以便在
  • PHP:创建边缘光滑的圆圈、图像或字体?

    我正在制作一个 PHP 图像脚本 它将在给定的半径处创建圆圈 I used 但讨厌它产生的粗糙边缘 所以我正在考虑制作或使用圆形字体 我将使用以下方式输出 这样字体就会产生一个边缘光滑的圆圈 我的问题是使 字体大小 与 半径大小 匹配 有任
  • 如何将解析器与不同类型的 Elem 结合起来

    我正在尝试创建一个结合了正则表达式解析器和我拥有的自定义解析器的解析器 我看过Scala 如何组合来自不同对象的解析器组合器 https stackoverflow com questions 2650254 scala how to co
  • MacOS Sierra 上未找到 OpenSSL

    我正在尝试安装 PHP MongoDB 驱动程序 但安装失败 因为它找不到 OpenSSL Users username mongo php driver src libmongoc src mongoc mongoc crypto ope
  • Yii2:如何同时从数据库中删除相关模型数据?

    我曾经在 Yii 上工作 现在我在 Yii2 上构建一个新项目 在 Yii 上 有 beforeDelete 和 afterDelete 函数 它们允许我在那里添加代码并从连接表等中删除相关行 我的问题是 在 Yii2 上 是否有另一种方法
  • XML 解析器错误:未定义实体

    我在 stackoverflow 上搜索了这个问题 并找到了一些主题 但我觉得在这个问题上没有真正可靠的答案 我有一个用户提交的表单 字段的值存储在 XML 文件中 XML 设置为使用 UTF 8 编码 用户时不时地会从某处复制 粘贴文本
  • awk 单引号或双引号的用法

    为什么 awk 命令使用单引号和双引号不能产生相同的结果 root vm90 root who awk print 2 root vm90 root who awk print 2 我想在 PHP shell exec 函数中使用 awk
  • PHPStorm + PHPUnit 颜色输出

    因此 我在 PHPStorm 7 1 中运行 PHPUnit 但我不知道如何在测试中使 ANSI 颜色代码正常工作 我的 PHPunit xml 有colors true 在属性列表中 但每次我尝试类似的操作 echo 033 31mErr
  • 逐像素改变图像的颜色

    我试图更改 png 图像的颜色 以便透明区域仍然保持透明 并为图像的其余部分提供颜色 这就是我尝试过的
  • 将 swift 变量包装在可选变量中的简写?

    Swift 允许我们使用速记符号str 打开可选的包装 但如果我们想做相反的事情呢 假设我有一个变量 var str String String 是否有任何简写符号可以将其转换为可选 即String or String 例如我想做类似的事情
  • 将 swift 变量包装在可选变量中的简写?

    Swift 允许我们使用速记符号str 打开可选的包装 但如果我们想做相反的事情呢 假设我有一个变量 var str String String 是否有任何简写符号可以将其转换为可选 即String or String 例如我想做类似的事情
  • Debian Jessie - Apache2 / PHP 5.6,无法上传超过 128kb

    我有一个问题让我发疯 我最近将我的服务器更新为 Jessie 希望我现在没有更新 但自从更新后 我无法在单次上传中上传超过 128KB 的文件 我已经尝试了所有常见的明显选项 检查 php ini 的最大文件大小 执行时间等 但没有解决方案

随机推荐

  • 获取循环的大缓冲通道块的长度

    我遇到了一种奇怪的行为 我正在使用缓冲通道 当使用大缓冲区时 整个程序执行将会阻塞 在下面的代码片段中 package main import fmt func main choke make chan string 150000 go f
  • 取票自旋锁互斥锁的内存顺序

    假设我有以下取票自旋锁互斥体实现 在 C 中使用 GCC 原子内置函数 据我了解 解锁函数中使用 释放 内存顺序是正确的 不过 我不确定锁定功能 因为这是一个取票互斥体 所以有一个字段指示要分发的下一个票号 还有一个字段指示当前哪个票号持有
  • 在 Visual Studio 2010 中的工具栏上显示当前功能

    我希望显示我的光标所在的当前功能 我非常怀念 VS6 的这个功能 我尝试过自定义工具栏 但在数百个工具栏项的迷宫中找不到它应该不足为奇 有人知道吗它叫什么以及它位于哪里 或者如果可能的话 让我举一个例子 我正在调试并看到变量设置为某个值 我
  • 字段前的 Groovy @ 符号

    Groovy 中字段名称前面的 意味着什么 对于某些类 我可以访问无法直接访问的私有字段 让我们看看组合闭包 http git codehaus org gitweb cgi p groovy git git a blob f src ma
  • IOS - Unicode 无符号

    我有一个用 C 编写的函数 我想将其转换为 Objective C 怎么做 public static string UnicodeUnSign string s const string uniChars const string koD
  • Python 套接字刷新

    我试图确保每次调用 socket send 函数时 我的缓冲区都会发送 刷新 到我的服务器 使用 unix 套接字在 C 中 根据我的理解 以及我在这个板上看到的 只需禁用 naggle 算法即可 应该这样做 但我的服务器仍然收到 4096
  • 我应该使用 Base64 编码还是 byte[] 在 .NET Web 服务中返回二进制数据

    我有一个简单的问题 通过 NET 中的 Web 服务公开二进制数据时 我应该返回字节数组还是简单地对二进制数据进行 base64 编码 这两种方法都有优点 缺点吗 主要受支持等 使用字节数组 通过 SOAP 协议 该字节数组将自动使用 ba
  • pycharm自动将制表符转换为空格

    我正在使用 pycharm IDE 进行 python 开发 它对于 django 代码来说工作得很好 因此怀疑将制表符转换为空格是默认行为 但是在 python IDE 中到处都会出现错误 因为它无法自动将制表符转换为空格 有没有办法实现
  • Bootstrap 3 +backbonejs - 切换导航未打开

    我在我的项目中使用 jquery backbonejs underscorejs 和 bootstrap 3 https izify com https izify com 这是我的源代码https github com datomnurd
  • 比较两个javascript数组?

    我想相互比较两个数组 看看是否匹配 如果匹配则执行某些操作 var answers new Array a b c d e var correct new Array a d do a for loop if there s a match
  • Kafka模板和Kafka生产者有什么区别?

    正如我所见 Kafka 模板内部使用了 Kafka 生产者 我只是想知道确切的区别是什么 此外 与 Kafka 生产者相比 我发现 Kafka 模板中提供了许多可用的 send 方法 请帮我解决一下 如果有人知道更多的话 生产者是一种模式
  • 提取PDF文档的特定部分[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有多个 30 个 PDF 文件 每个包含 48 96 页 所有页面的布局都是相同的 只有其他内容 数字 图表 背景 这些页面是光纤电缆测
  • WPF DatePicker 在更改月份时抛出异常

    好的 我正在 WPF Visual C 2010 Express 中处理这个项目 并且我有一些绑定到 DateTime 属性的 DatePickers 现在 如果我打开 选择器 并立即开始更改月份 那就没有问题了 但是 如果我选择一个日期然
  • 如何在 SwiftLint 上强制显示错误而不是警告?

    我的问题很简单 我该如何做所有warnings become errors on SwiftLint https github com realm SwiftLint 无需单独手动配置每条规则 要将 SwiftLint 集成到您的项目中 通
  • React:有状态类组件和使用 Hooks 的函数组件之间的区别?

    我刚刚创建了一个包含表达式的函数组件const state setState useState 现在我可以访问state and setState 这个有状态函数组件与有状态类组件非常相似 我只知道这个组件和典型的类组件之间的两个区别 当引
  • R 中的 Python 链接式数据整理

    我是 Python 新手 来自 R 环境 我喜欢 R 的一件事是能够编写代码 在一个可读的代码块中对数据进行多种转换 但对我来说 在 Python 中找到这种风格的代码非常困难 我想知道你们中的一些人是否可以指导在哪里可以找到有关该特定风格
  • 重启设备后,频繁发送短信就是开机时多发一次短信

    我经常发送短信 在重新启动设备时再次发送短信 同时我们也 打开 之后 它发送短信的时间间隔是正确的 但是当我们打开设备时 它会再次发送短信 public class BootCompletedIntentReceiver extends B
  • 将表格单元格添加到现有表格行,jQuery

    我正在尝试使用 jQuery 将值添加到表中 不幸的是 我不知道如何让 jQuery 将表单元格添加到现有行 例如 td a href key a td click function e e preventDefault testset k
  • 如何删除 ListBoxItem 周围的小填充?

    我正在设计一个列表框 我试图清除边距 所以我意识到它 我将样式的填充设置为 0 左填充 但我仍然可以看到其中有一些余量 并且我需要没有余量 你知道哪一个会出现问题吗
  • PHP:强制转换为(数组)和返回类型:数组不一样吗?

    我在 PHP 中遇到以下问题 print r 说是一样的gettype 说相同的类型 但最后的输出不适用于这两种情况 尽管它们应该是相同的 这对我来说看起来很奇怪 代码和输出 docdatau get object vars json de