我在php中有以下数组:
$values=[
[
['key'=>"Name",'value'=>"John"],
['key'=>'Surname','value'=>"Doe"],
['key'=>"email",'value'=>'john@doe.com']
],
[
['key'=>"Surname",'value'=>"Ichigo"],
['key'=>'Name','value'=>"Kurosaki"],
['key'=>'email','value'=>'kurosakiighogo@soulsociety.com']
],
[
['key'=>"email",'value'=>"monket.d@luffy.com"],
['key'=>'Name','value'=>"Monkey D."],
['key'=>'Surame','value'=>'Luffy']
],
];
我想以某种方式生成:
$values2=[
head=>['Name','Surname','email'],
values=>[
["John","Doe","john@doe.com"],
["Kurosaki","Ichigo","kurosakiighogo@soulsociety.com"],
['Monkey D.','Luffy','monket.d@luffy.com']
]
]
我想要的关键点是在头上存储键和值的值。但是同一个命令。
具体关注值[$ i] [$ j]我希望存储$ values [' value']其中$ values [' key'] ===头[J]。
问题不在于如何显示数组$ values2,而是如何将$ values数组转换为$ values2。
我想要一点帮助。
答案 0 :(得分:2)
试试这个;)
$values = [
[
['key'=>"Name",
'value'=>"John"],
['key'=>'Surname',
'value'=>"Doe"],
['key'=>"email",
'value'=>'john@doe.com']
],
[
['key'=>"Surname",
'value'=>"Ichigo"],
['key'=>'Name',
'value'=>"Kurosaki"],
['key'=>'email',
'value'=>'kurosakiighogo@soulsociety.com']
],
[
['key'=>"email",
'value'=>"monket.d@luffy.com"],
['key'=>'Name',
'value'=>"Monkey D."],
['key'=>'Surname',
'value'=>'Luffy']
],
];
$records = [];
$keyIndex = [];
foreach($values as $index=> $record){
$thisRecord = [];
foreach($record as $index1=> $field){
if(!$index){
$keyIndex[$field['key']] = $index1;
$records['head'][] = $field['key'];
}
$thisRecord[$keyIndex[$field['key']]] = $field['value'];
}
ksort($thisRecord);
$records['values'][] = $thisRecord;
}