【发布时间】:2021-02-17 14:37:07
【问题描述】:
我有一个 sn-p,我试图在一个数组上循环 2 次,如下所示:
$rules = Rule::get();
$segments = [];
foreach ($rules as $rule) {
$segments['segment = "basic"']['serviceType']= $rule->segment;
foreach($rule->steps as $key => $value) {
$segments['segment = "basic"'][$key] = $value;
}
}
return $segments;
所以我期望从该代码中得到的如下所示:
'segment = "BASIC"' => [
'serviceType = "3"' => [
'item1' => 1,
'item2' => 2
],
'serviceType = "2"' => [
'item1' => 1,
'item2' => 2
],
'serviceType = "1"' => [
'item1' => 1,
'item2' => 2
],
但我得到的是如下所示
^ array:1 [
"segment = "basic"" => array:3 [
"serviceType" => "1"
"item1" => 1
"item1" => 2
]
]
所以我想要的是segment = "basic" repeats as the count of Rule` 模型中的数组我知道我的代码正在返回 5 个模型实例,但我猜在某些时候代码会覆盖数组而不是循环它。提前谢谢
【问题讨论】:
-
您提供的代码似乎不会输出您所说的内容。该循环在此处定义了一个
'serviceType'键:$segments['segment = "basic"']['serviceType']= $rule->segment;,但该键在您获得的数组中的该级别不存在。 -
很抱歉我没有得到你,但我确信这是当前代码的输出
-
我唯一的问题是应该循环并给我 4 个数组的第二部分只返回 1
-
您还可以从创建minimal, reproducible example 中受益。我们不知道这些值来自哪里,因此很难判断您做错了什么。
-
旁注:您使用的数组键非常混乱,$segments['basic'] ... 会使您的代码更具可读性。 serviceType 也一样