PHP :数组第一个值设置为其余值的键
PHP : Array first value set as key for remaining ones
我有以下数组
$a = [
[
0 => 'Name',
1 => 'Address '
],
[
0 => 'Name 1',
1 => 'Address 1'
],
[
0 => 'Name 2',
1 => 'Address 2'
]
];
如何将第一个元素值分配给其余键?
于是就变成了
$a = [
[
'Name' => 'Name 1',
'Address' => 'Address 1'
],
[
'Name' => 'Name 2',
'Address' => 'Address 2'
]
];
所以基本上我得到了这个 excel 文件数组并且需要以上类型的数组结果。
试试这个:
$array = [
[
0 => 'Name',
1 => 'Address '
],
[
0 => 'Name 1',
1 => 'Address 1'
],
[
0 => 'Name 2',
1 => 'Address 2'
]
];
$new_array = array();
$name = $array[0][0];
$address = $array[0][1];
//remove first key
array_shift($array);
foreach($array as $key => $value)
{
$new_array[$key] = [
$name => $value[0],
$address => $value[1]
];
}
var_dump($new_array);
输出:
array(2) {
[0]=>
array(2) {
["Name"]=>
string(6) "Name 1"
["Address "]=>
string(9) "Address 1"
}
[1]=>
array(2) {
["Name"]=>
string(6) "Name 2"
["Address "]=>
string(9) "Address 2"
}
}
使用array_shift() with foreach() and array_combine():
$firstValue = array_shift($a); //remove first value from array and assign it to variable
foreach($a as &$v){ //loop over remaining values
$v = array_combine($firstValue,$v); //combine both array to create key value pair
}
print_r($a);
输出:https://3v4l.org/1J6pU And https://3v4l.org/qMFPi
参考:- Passing by Reference
我有以下数组
$a = [
[
0 => 'Name',
1 => 'Address '
],
[
0 => 'Name 1',
1 => 'Address 1'
],
[
0 => 'Name 2',
1 => 'Address 2'
]
];
如何将第一个元素值分配给其余键?
于是就变成了
$a = [
[
'Name' => 'Name 1',
'Address' => 'Address 1'
],
[
'Name' => 'Name 2',
'Address' => 'Address 2'
]
];
所以基本上我得到了这个 excel 文件数组并且需要以上类型的数组结果。
试试这个:
$array = [
[
0 => 'Name',
1 => 'Address '
],
[
0 => 'Name 1',
1 => 'Address 1'
],
[
0 => 'Name 2',
1 => 'Address 2'
]
];
$new_array = array();
$name = $array[0][0];
$address = $array[0][1];
//remove first key
array_shift($array);
foreach($array as $key => $value)
{
$new_array[$key] = [
$name => $value[0],
$address => $value[1]
];
}
var_dump($new_array);
输出:
array(2) {
[0]=>
array(2) {
["Name"]=>
string(6) "Name 1"
["Address "]=>
string(9) "Address 1"
}
[1]=>
array(2) {
["Name"]=>
string(6) "Name 2"
["Address "]=>
string(9) "Address 2"
}
}
使用array_shift() with foreach() and array_combine():
$firstValue = array_shift($a); //remove first value from array and assign it to variable
foreach($a as &$v){ //loop over remaining values
$v = array_combine($firstValue,$v); //combine both array to create key value pair
}
print_r($a);
输出:https://3v4l.org/1J6pU And https://3v4l.org/qMFPi
参考:- Passing by Reference