PHP数组结合了问题

时间:2018-05-08 16:58:41

标签: php arrays

我一直在努力将这两个阵列放在一起,我想知道你是否愿意在这里帮忙。

这是我的array1

$array1 = array('Name', 'Code', 'Email');

这是我的array2

$array2 = array(
  'user1', '12345', 'user1@example.com',
  'user2', '12345', 'user2@example.com',
  'user3', '12345', 'user3@example.com',
  'user4', '12345', 'user4@example.com',
  'user5', '12345', 'user5@example.com',
  'user6', '12345', 'user6@example.com'
);

我正在尝试创建一个新数组,其中索引是array1的元素('Name','code','email')...所以它最终会如下所示:

$array3 = (
  'Name'=>'user1', 'Code'=>'12345', 'Email'=>'user1@example.com'
  'Name'=>'user2', 'Code'=>'12345', 'Email'=>'user2@example.com'
  'Name'=>'user3', 'Code'=>'12345', 'Email'=>'user3@example.com'
  'Name'=>'user4', 'Code'=>'12345', 'Email'=>'user4@example.com'
  'Name'=>'user5', 'Code'=>'12345', 'Email'=>'user5@example.com'
  'Name'=>'user6', 'Code'=>'12345', 'Email'=>'user6@example.com'
); 

所有这一切的原因是通过json将其发送到jquery响应以将其呈现给表。

你能帮帮我吗?

提前致谢。

3 个答案:

答案 0 :(得分:2)

您可以array_map循环播放$array2并使用array_combine在每个循环中指定$array1作为键

$array1 = array('Name', 'Code', 'Email');

$array2 = array(
  array('user1', '12345', 'user1@example.com'),
  array('user2', '12345', 'user2@example.com'),
  array('user3', '12345', 'user3@example.com'),
  array('user4', '12345', 'user4@example.com'),
  array('user5', '12345', 'user5@example.com'),
  array('user6', '12345', 'user6@example.com')
);

$results = array_map(function ($n) use($array1) {
    return array_combine($array1, $n);
}, $array2 );

echo "<pre>";
print_r( $results );
echo "</pre>";

这将导致:

Array
(
    [0] => Array
        (
            [Name] => user1
            [Code] => 12345
            [Email] => user1@example.com
        )

    [1] => Array
        (
            [Name] => user2
            [Code] => 12345
            [Email] => user2@example.com
        )

    [2] => Array
        (
            [Name] => user3
            [Code] => 12345
            [Email] => user3@example.com
        )

    [3] => Array
        (
            [Name] => user4
            [Code] => 12345
            [Email] => user4@example.com
        )

    [4] => Array
        (
            [Name] => user5
            [Code] => 12345
            [Email] => user5@example.com
        )

    [5] => Array
        (
            [Name] => user6
            [Code] => 12345
            [Email] => user6@example.com
        )

)

文档:array_maparray_combine

答案 1 :(得分:1)

假设你有数组和数组:

$array1 = array('Name', 'Code', 'Email');

$array2 = array(
    ['user1', '12345', 'user1@example.com'],
    ['user2', '12345', 'user2@example.com'],
    ['user3', '12345', 'user3@example.com'],
    ['user4', '12345', 'user4@example.com'],
    ['user5', '12345', 'user5@example.com'],
    ['user6', '12345', 'user6@example.com']
);

$array3 = [];
foreach($array2 as $a2) {
    $array3[] = array_combine ($array1 , $a2 );
}

var_dump($array3);

那会有效。否则,你需要一个不同的方法,如:

$array1 = array('Name', 'Code', 'Email');

$array2 = array(
    'user1', '12345', 'user1@example.com',
    'user2', '12345', 'user2@example.com',
    'user3', '12345', 'user3@example.com',
    'user4', '12345', 'user4@example.com',
    'user5', '12345', 'user5@example.com',
    'user6', '12345', 'user6@example.com'
);

$array3 = [];
$i = 0;
foreach($array2 as $a2) {
    $i++;
    $tempArray[] = $a2;
    if($i % 3 == 0) { //if is the 3rd element, combine then reset tempArray
        $array3[] = array_combine ($array1 , $tempArray );
        $tempArray = [];
    } 
}

var_dump($array3);

答案 2 :(得分:0)

您可以修改现有的$array2

array_walk($array2, function(&$v, $k, $array) {
                        $v = array_combine($array, $v);
                    }, $array1);