我有以下数据数组 -
0 1
#1 "Fname" "Lname"
#2 "Tom" "Shaw"
#3 "Marc" "Hob"
#4 "Sim" "Pow"
我想把它改成一个键值对,其中“Fname”将是“Tom”,“Mark”和&的键。 “Sim”和“Lname”将成为“Shaw”,“Hob”和“Lname”的关键。 “的Pow。
如果我遍历此数组 -
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编程的新手,非常感谢编程忍者的帮助来解决这个问题。
谢谢。
答案 0 :(得分:1)
这应该做你想要的:
$new_array = array();
foreach ($data as $value)
{
$new_array[] = array('Fname' => $value[0], 'Lname' => $value[1]);
}
答案 1 :(得分: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.
答案 2 :(得分:1)
以这种方式:
$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);
}
答案 3 :(得分:0)
$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
)
)