首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >数组中存在键时出现未定义的索引错误

数组中存在键时出现未定义的索引错误
EN

Stack Overflow用户
提问于 2020-06-05 10:19:15
回答 2查看 162关注 0票数 3

我在一个看似很简单的问题上胡思乱想,但我找不到解决办法。

我这里有一个简单的$row数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array:2 ["reference" => "ABCDEF"
  "quantity" => "10"
]

我正在尝试解析它并使用以下命令检索每个引用的数量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$line = [
  'ref' => strtoupper($row["reference"]),
  'quantity' => $row["quantity"]
];

我使用下面的代码循环遍历行数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foreach ($rows as $row) {               
  $line = [
    'ref' => strtoupper($row['reference']),
    'quantity' => $row['quantity']
  ];
}

作为测试,我的主数组$rows有两行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^ array:3 [0 => array:2 [0 => "ABCDEF"
    1 => "10"
  ]
  1 => array:2 [0 => "WXCVBN"
    1 => "3"
  ]
  2 => array:1 [0 => null
  ]
]

但是,我得到了以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Undefined index: reference

奇怪的是,如果我注释掉

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'ref' => strtoupper($row["reference"]),

行,我可以毫不费力地得到“数量”值...

我知道关键就在这里,因为$row对象的调试会给出上面的结果。

它一定非常简单...但是我找不到解决的办法。

如果有人能帮忙的话?

EN

回答 2

Stack Overflow用户

发布于 2020-06-05 11:32:41

显然,$row变量是在foreach循环中使用的较大数组中的一行。这可能是你的问题的解决方案。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$array = [
  [ "reference" => "ABC", "quantity" => "10"],
  [ "reference" => "ABC", "quantity" => "10"],
  [ "reference" => "ABC", "quantity" => "10"],
];

$line[] = '';

foreach($array as $row)
{
    $line['ref'] = $row['reference'];
    $line['quantity'] = $row['quantity'];
}

在这个例子中,$array是你更大的数组,我用它来测试这个例子。之后,我创建了一个空数组$line来追加“新”数据。

你能试试这个吗?

编辑:

在查看了您的循环和数组之后,我注意到您的数组没有引用键。你能试试strtoupper(row[0])吗?

票数 0
EN

Stack Overflow用户

发布于 2020-06-08 10:09:33

查看您的代码似乎是在没有重写新数组中的键的情况下将$row数组转换为$line

你的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    foreach ($rows as $row) {
        $line = [
            'ref' => strtoupper($row['reference']),
            'quantity' => $row['quantity']
        ];
    }

通过重写,您可以按索引访问$line数据,而不是按键

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array:3 [0 => array:2 [0 => "ABCDEF"
    1 => "10"
  ]
  ...
]

My solution

如果您希望通过键访问$line数据,则需要将循环重写为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foreach($rows as $rowData) {
    foreach($rowData as $rowKey => $rowValue) {
        $data = [
            'ref' => $rowKey => strtoupper$($rowValue),
            'quantity' => $row['quantity']
        ];
    }
    $line[] = $data;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62213075

复制
相关文章
Typecho评论时可能出现的错误
根据URL得知应该是在发评论的时候出现的错误。很奇怪,因为很久之前这位博友jiuki's blog也给我反馈过一次。说明这问题不是偶然出现的,所以必须要解决才行。
Melody132
2020/03/13
1.5K0
Mongodb多键索引之数组
最近有项目需求用到多键索引,Mongodb中字段值支持多键索引主要包括嵌套文档、数组以及数组嵌套文档.例如联系包括手机、固定电话、邮箱、微信、QQ等,对于字段值存储类型不一样,决定创建多键索引也不一样同时性能也存在差异,例如数组值(包括数组以及数组文档),创建多键索引时会为数组中每个元素都创建索引键,如数组中元素特别多,相应索引也会特别大,创建多键索引或者组合索引时最多只支持一个数组值.
徐靖
2020/08/18
1.8K0
ThinkPHP报错“未定义数组索引”原因与解决方法
但是,大家有必要知道:thinkphp这个文件夹是框架的核心目录,一般我们是没必要修改的。要是框架核心文件报错,有可能是PHP版本的问题。
阿哲
2022/03/13
7.3K0
Mongodb多键索引之数组文档
接上2篇文档关于多键索引内容,接着学习数组文档,主要实验来验证如何进行高效数据查询,通过对比方式来验证3种多键索引优缺点以及适合场景,具体链接如下:
徐靖
2020/08/25
3.3K0
访问网时出现403 Forbidden错误的原因:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/113700.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/07
10.2K1
IDEA远程提交hadoop任务时出现的错误
上述问题解决:开启historyserver服务 mr-jobhistory-daemon.sh start historyserver
ZONGLYN
2019/08/08
2.3K0
CAD 2020 安装时出现“安装错误1603:安装过程中的致命错误”
错误1603是Microsoft Windows Installer(MSI)生成的一般错误。此错误倾向于与系统相关,而不是与特定软件相关联。以下是1603错误的常见示例:
知识兔下载
2023/01/31
9.4K0
navicat连接mysql时出现2003(10060)错误
参考http://jingyan.baidu.com/article/95c9d20dac9040ec4f75617a.html,发现是防火墙未关闭;
全栈程序员站长
2021/06/21
8.1K1
navicat连接mysql时出现2003(10060)错误
Eclipse保存文件时出现字符编码错误
eclipse 由于开源所以支持了比较杂的编码方式,而这些一个工程导入时添加了不少的外来程序,由于不是同一工程一次编码带来了其中含有 GBK 或 UTF8 或 UTF16 或 ASCII 等文件编译时就会出现错误警告。
黑泽君
2018/10/11
3.4K0
LeetCode41|数组中数组出现的次数
请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
码农王同学
2020/08/25
8550
LeetCode41|数组中数组出现的次数
mysql新建数据时判断表,字段,索引是否存在
-- 新建表时判断表是否存在 CREATE TABLE If Not Exists `表名` ( `id`  int(10) NOT NULL AUTO_INCREMENT , `plan_id`  int(10) NULL  , `bet_num`  varchar(255) NULL  , `vr_win_data`  varchar(255) NULL COMMENT  , PRIMARY KEY (`id`) ); -- 新建字段时判断字段是否存在 CREATE PROCEDURE sp_up
仙士可
2019/12/18
5.6K0
Oracle查询存在外键约束但未创建对应索引的情况
但也要注意,该脚本是查询当前连接用户存在外键约束但未创建对应索引的情况,且创建了表ck_log的,脚本最开始还会先删除表ck_log,如果业务不允许创建与业务无关的表,甚至业务可能有这种名字的表就一定要注意了!
Alfred Zhao
2020/04/28
8670
IDEA中调试Topology出现的错误
在IDEA的maven项目中编写Topology出错: NoClassFound找不到主类:解决– 在pom.xml中,找到中的storm,添加<>compi<>
ZONGLYN
2019/08/08
1.4K0
关于首次运行Hadoop的Grep案例时出现的错误
重点关注这句“19/05/14 18:26:55 INFO metrics.MetricsUtil: Unable to obtain hostName java.net.UnknownHostException: hadoop101: hadoop101: Temporary failure in name resolution”,其为hostname可能存在问题,因此去查看/etc/sysconfig/network文件和/etc/hosts文件,发现其network文件中的“HOSTNAME=”后多打了一个空格,把其去掉,即可,问题解决
可定
2020/04/20
4.5K0
[PHP] php中的索引数组和数组顺序问题
先上结论 , php的索引数组不是传统的从0开始的整数索引数组 , 而是一个关联数组 , 是一个有序的键值对 ,这个序就是定义时候的顺序
唯一Chat
2021/04/25
9.3K0
MongoDB 数组在mongodb 中存在的意义
在MOGNODB 的文档设计和存储中,存在两个部分 1 嵌套 2 数组,所以如果想设计好一个MONGODB 在理解业务,读写比例,查询方式后,就需要介入到更深层次的理解嵌套的查询方式,嵌套多层后的性能问题, 数组其实比嵌套带来更多的问题,所以今天我们的从数组开始。
AustinDatabases
2022/04/05
4.3K0
MongoDB  数组在mongodb 中存在的意义
MySQL中索引创建错误的场景
从这个提示,可以知道是给T表的reg_code字段创建一个BTREE索引,而这个reg_code列的字段类型是BLOB或TEXT,错误信息说的是需要在键的说明中有长度定义,这是什么意思?
bisal
2023/09/21
3220
MySQL中索引创建错误的场景
点击加载更多

相似问题

尝试访问数组中存在的键时PHP未定义的索引

318

Laravel:未定义的索引数组键不存在

47

引用数组键时“未定义索引”

43

Codeigniter -检查会话是否存在时出现未定义的索引错误

01

使用ADD into Couchbase时出现键存在错误

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文