[英]Multidimensional array alter key value pair
我有以下数据数组 -
0 1
#1 "Fname" "Lname"
#2 "Tom" "Shaw"
#3 "Marc" "Hob"
#4 "Sim" "Pow"
我想将其更改为键值对集,其中“Fname”将是“Tom”、“Mark”和“Sim”的键,“Lname”将是“Shaw”、“Hob”和“的键战俘。
如果我遍历这个数组 -
foreach ($data as $key=>$value) {
echo $key.'<br>';
foreach ($value as $v) {
echo $v.'<br>';
}
}
我得到以下输出 -
0
Fname
Lname
1
Tom
Shaw
2
Marc
Hob
3
Sim
Pow
这表明“Fname、Lname”、“Tom、Shaw”等是另一组数组,我只是想将其作为键值对。
我是 php 编程的新手,非常感谢编程忍者的帮助来解决这个问题。
谢谢你。
这应该做你想做的:
$new_array = array();
foreach ($data as $value)
{
$new_array[] = array('Fname' => $value[0], 'Lname' => $value[1]);
}
我认为@Marcovecchio 走在正确的轨道上,但不是很准确。 基于他的代码,您可以使用:
<?php
// create your new array
$new_array = array();
// pull 'Fname' and 'Lname' off original array, and set them as $col
$col = array_shift($data);
// iterate through original array, which now contains just names
foreach ($data as $value) {
// set $col values as keys for each element
$new_array[] = array($col[0] => $value[0], $col[1] => $value[1]);
}
// output what we just made
print_r($new_array);
?>
输出:
Array (
[0] => Array (
[Fname] => Tom
[Lname] => Shaw
)
[1] => Array (
[Fname] => Marc
[Lname] => Hob
)
[2] => Array ( [
Fname] => Sim
[Lname] => Pow
)
)
注意:这假定列数始终为 2。
这是一种方法:
$keys = array_shift($data);
$result = array_map(function($v) use ($keys) { return array_combine($keys, $v); }, $data);
但使用循环可能更简单:
$keys = array_shift($data);
foreach($data as $vals) {
$result[] = array_combine($keys, $vals);
}
这是你想要的吗?
$arr = array(array('Fname','Lname'), array('Tom','Shaw'), array('Marc','Hob'), array('Sim','Pow'));
$out = array();
foreach($arr[0] as $cols){
$out[$cols] = array();
}
foreach($arr as $key => $row){
$i = '0';
if($key != '0'){
foreach($out as $out_key=>$out_row){
$out[$out_key][] = $row[$i];
$i++;
}
}
}
print_R($out);
输出
Array (
[Fname] => Array
(
[0] => Tom
[1] => Marc
[2] => Sim
)
[Lname] => Array
(
[0] => Shaw
[1] => Hob
[2] => Pow
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.