我需要从输入表单创建多维数组,因为我想将信息传递给mysql。我创建了它,但是如何才能使它成为关联的呢? 我的意见:
1.1*3 -> 3.3000000000000003
0.2*7 -> 1.4000000000000001
这是现在的打印方式:
echo "<input type='number' name='hours_to_save[$my_date][$project[$i]]'/>"
但我想这样:
array(30) {
["2017-05-01"]=>
array(3) {
["kompan"] => string(1) "2"
["5 ogrodow"] => string(1) "3"
["karolowo"] => string(1) "4"
},
...
}
答案 0 :(得分:1)
输入:
$input=array(
"2017-05-01"=>["kompan"=>"2","5 ogrodow"=>"3","karolowo"=>"4"],
"2017-05-02"=>["kompan"=>"5","5 ogrodow"=>"6","karolowo"=>"7"]
);
方法#1(建议foreach() x2 *)
foreach($input as $d=>$a){
foreach($a as $k=>$v){
$result[$d][]=['project'=>$k,'hours'=>$v];
}
}
var_export($result);
这意味着:
$result // declare output array
[$d] // use the date values as keys
[]= // autoincrement the keys in the subarray
['project'=>$k, // each subarray's 1st element will use 'project' as the key and the input subarray's key as its value
'hours'=>$v]; // each subarray's 2nd element will use 'hours' as the key and the input subarray's value as its value
方法#2(foreach()
&amp; array_map() - array_keys() *纯粹用于演示)
foreach($input as $k=>$a){
$result[$k]=array_map(function($a,$b){return ['project'=>$a,'hours'=>$b];},array_keys($input[$k]),$input[$k]);
}
var_export($result);
输出(无论方法如何):
array (
'2017-05-01' =>
array (
0 =>
array (
'project' => 'kompan',
'hours' => '2',
),
1 =>
array (
'project' => '5 ogrodow',
'hours' => '3',
),
2 =>
array (
'project' => 'karolowo',
'hours' => '4',
),
),
'2017-05-02' =>
array (
0 =>
array (
'project' => 'kompan',
'hours' => '5',
),
1 =>
array (
'project' => '5 ogrodow',
'hours' => '6',
),
2 =>
array (
'project' => 'karolowo',
'hours' => '7',
),
),
)
答案 1 :(得分:0)
您可以使用 foreach 循环插入到mysql。 Foreach将继续结束阵列。
$newArr = [];
$i=0;
foreach ($yourArray as $key=>$val) {
$newArr['date'] = $key;
foreach ($val as $dKey=>$row) {
$newArr['date'][$i]['project'] = $dKey;
$newArr['date'][$i]['hours'] = $row;
$i++;
}
}