我在一个看似很简单的问题上胡思乱想,但我找不到解决办法。
我这里有一个简单的$row
数组:
array:2 [▼
"reference" => "ABCDEF"
"quantity" => "10"
]
我正在尝试解析它并使用以下命令检索每个引用的数量:
$line = [
'ref' => strtoupper($row["reference"]),
'quantity' => $row["quantity"]
];
我使用下面的代码循环遍历行数组:
foreach ($rows as $row) {
$line = [
'ref' => strtoupper($row['reference']),
'quantity' => $row['quantity']
];
}
作为测试,我的主数组$rows
有两行:
^ array:3 [▼
0 => array:2 [▼
0 => "ABCDEF"
1 => "10"
]
1 => array:2 [▼
0 => "WXCVBN"
1 => "3"
]
2 => array:1 [▼
0 => null
]
]
但是,我得到了以下错误:
Undefined index: reference
奇怪的是,如果我注释掉
'ref' => strtoupper($row["reference"]),
行,我可以毫不费力地得到“数量”值...
我知道关键就在这里,因为$row
对象的调试会给出上面的结果。
它一定非常简单...但是我找不到解决的办法。
如果有人能帮忙的话?
发布于 2020-06-05 11:32:41
显然,$row变量是在foreach循环中使用的较大数组中的一行。这可能是你的问题的解决方案。
$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])
吗?
发布于 2020-06-08 10:09:33
查看您的代码似乎是在没有重写新数组中的键的情况下将$row
数组转换为$line
。
你的代码
foreach ($rows as $row) {
$line = [
'ref' => strtoupper($row['reference']),
'quantity' => $row['quantity']
];
}
通过重写,您可以按索引访问$line
数据,而不是按键
array:3 [▼
0 => array:2 [▼
0 => "ABCDEF"
1 => "10"
]
...
]
My solution
如果您希望通过键访问$line
数据,则需要将循环重写为:
foreach($rows as $rowData) {
foreach($rowData as $rowKey => $rowValue) {
$data = [
'ref' => $rowKey => strtoupper$($rowValue),
'quantity' => $row['quantity']
];
}
$line[] = $data;
}
https://stackoverflow.com/questions/62213075
复制相似问题