繁体   English   中英

多维数组改变键值对

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM