如何解决即使声明了键也未定义的索引
我有一个生成多维关联数组的php脚本:
TS2322: Type '{ store: MockStoreEnhanced<unknown,{}>; }' is not assignable to type 'IntrinsicAttributes & { children?: ReactNode; }'. Property 'store' does not exist on type 'IntrinsicAttributes & { children?: ReactNode; }'.
我总是得到<?php
$a=array();
$x = 0;
while($x < 2)
{
$a["color"] = array();
if($x == 0)
{
$a["color"]["price"] = "25";
}
else
{
$a["color"]["price"] .= "5";
}
$x += 1;
}
print_r($a);
?>
。
我已经在if语句中明确定义了Notice: Undefined index: price
索引,那么为什么会这样呢?
解决方法
您将在每次迭代中使用price
清除$a["color"] = array();
元素
因此,您没有price
可以串联。
也许您认为必须在声明子元素之前声明子数组。对于数组,这不是必需的,但对于对象则是必需的。这是demo-我已经注释掉了防止错误的代码行。
$a = [];
for ($x = 0; $x < 2; ++$x) {
if (!$x) {
$a["color"]["price"] = "25";
} else {
$a["color"]["price"] .= "5";
}
}
var_export($a);
输出:
array (
'color' =>
array (
'price' => '255',),)
不过,我必须说,您将价格串联而不是加价真是奇怪。要添加,只需将.
替换为+
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。