所以... 我有这个foreach循环,其中包含有关产品的信息,我想将信息保存到每个循环的单独数组中。
我在考虑做这样的事情:
$return_array = array();
foreach($items as $item) {
$return_array[] = $item;
}
但我这样做有麻烦,因为我使用的是html的输入值,我需要在发送到数据库之前添加它们。
我的foreach就像:
foreach($items as $item) {
<table>
<tr>
<td>
<input value="<?= $item->name ?>" name="item<?= $item->id ?>">
</td>
</tr>
... more table tags
<?php foreach($item as $key) { ?>
<input name ="item<?= $item->id ?>_label<?= $key->label ?>
<?php } ?>
... more table tags
<select name="item<?= item->id ?>_status>
//Choose the state the product is in
<option value="damaged">
<option value="good">
</select>
所以在用表格提交之后(这是一个顺便说一句)我得到这样的东西:
(取决于产品有多少标签可以增加)
$array =
['item1'] = 'test';
['item1_label1'] = 123;
['item1_label2'] = 213;
['item1_status'] = 'good';
['item2'] = 'test2';
['item2_label1'] = 112;
['item2_label2'] = 1232;
['item2_label3'] = 132;
['item2_status'] = 'broken';`
现在我想要的是:
$array =
['item1'] = array[ //name of this doesn't matter
['item1'] = 'test'; // name
['item1_label1'] = 123; //label
['item1_label2'] = 213; //label
['item1_status'] = 'good'; //status
],
['item2'] = array[
['item2'] = 'test2'; //name
['item2_label1'] = 112; //label
['item2_label2'] = 1232; //label
['item2_label3'] = 132; //label
['item2_status'] = 'broken' //status
]
];
我想从表单中创建此信息。 (也可以增加项目数量。)
答案 0 :(得分:1)
试试这个,
$result = [];
foreach($array as $k => $v)
{
//$result[substr($k, 0, 5)][$k] = $v;
if(strpos($k, '-') === FALSE)
$result[$k][$k] = $v;
else
$result[substr($k, 0, strpos($k, '-'))][$k] = $v;
}