Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从2个数组中创建一个数组_Php_Arrays_Foreach - Fatal编程技术网

Php 从2个数组中创建一个数组

Php 从2个数组中创建一个数组,php,arrays,foreach,Php,Arrays,Foreach,我有这个: $Array1 = "FirstName, LastName, Email"; $Array2 = "John, Doe, johndoe@email.com"; 使用foreach或其他方法,最终的数组格式会是这样吗 $mergedArrays = array( 'FirstName' =>"John", 'LastName' => "Doe", 'Email' =>'johndoe@email.com'

我有这个:

$Array1 = "FirstName, LastName, Email";
$Array2 = "John, Doe, johndoe@email.com";
使用foreach或其他方法,最终的数组格式会是这样吗

$mergedArrays = array(
    'FirstName'        =>"John",
    'LastName'     => "Doe",
    'Email'       =>'johndoe@email.com',
);

print_r($mergedArrays);

如果您确定两个数组将包含相同的以逗号分隔的数字,请使用以下命令:

版本1(使用100000进行测试需要约0.08秒,+-4倍的速度)

@castis的替代版本(100000次测试约0.3s)


如果您确定两个数组将包含相同的以逗号分隔的数字,请使用以下命令:

版本1(使用100000进行测试需要约0.08秒,+-4倍的速度)

@castis的替代版本(100000次测试约0.3s)

如果必须使用foreach(其中数组可以使用):

如果必须使用foreach(其中数组可以使用):


print_r(数组组合(分解(',',$Array1),分解(',',$Array2))
打印(数组组合(分解(',',$Array1),分解(',',$Array2))一个小改进
爆炸(',',$Array1)
;使用正则表达式更新以删除额外空间之前和之后的内容。对于
array\u组合(array\u映射(trim,$Array1)、array\u映射(trim,$Array2)),将不会太容易混淆但总体上更新了+1。正则表达式代码运行得更快。当然,有3条记录没有什么区别,只是出于好奇。“正则表达式代码运行得更快”-你没有这些测试结果的源代码吗?我不是说你的测试错了,我只是好奇。或者,我自己也很容易做到:-)一个小小的改进
爆炸(',',$Array1)
;使用正则表达式更新以删除额外空间之前和之后的内容。对于
array\u组合(array\u映射(trim,$Array1)、array\u映射(trim,$Array2)),将不会太容易混淆但总体上更新了+1。正则表达式代码运行得更快。当然,有3条记录没有什么区别,只是出于好奇。“正则表达式代码运行得更快”-你没有这些测试结果的源代码吗?我不是说你的测试错了,我只是好奇。或者他们很容易自己做:-)你的输入看起来不像OP的输入
$Array1
$Array2
最好标记为
$csv1
$csv2
@mickmackusa我在那里假设OP在写下问题的数组时走了一条捷径。如果输入真的以字符串开头,它闻起来就像CSV输入。也许
str\u getcsv
可以在这里提供帮助。如果允许使用两个字符分隔符,我希望
str\u getcsv()
在这里。有点令人失望的是,我在这个问题上的反对票被抵消了,这破坏了我的公平行动。(没有研究,没有尝试,错误的变量命名会影响问题的清晰度。)您的输入看起来不像OP的输入
$Array1
$Array2
最好标记为
$csv1
$csv2
@mickmackusa我在那里假设OP在写下问题的数组时走了一条捷径。如果输入真的以字符串开头,它闻起来就像CSV输入。也许
str\u getcsv
可以在这里提供帮助。如果允许使用两个字符分隔符,我希望
str\u getcsv()
在这里。有点令人失望的是,我在这个问题上的反对票被抵消了,这破坏了我的公平行动。(没有研究,没有尝试,错误的变量命名会影响问题的清晰度。)
<?php
$Array1 = "FirstName, LastName, Email";
$Array2 = "John, Doe, johndoe@email.com";

$Array1 = explode(',', preg_replace('/\s*,\s*/',',',$Array1)); //remove spaces before and after comma
$Array2 = explode(',', preg_replace('/\s*,\s*/',',',$Array2));

if(count($Array1) == count($Array2)) {
    $result = array_combine($Array1, $Array2);
}

print_r($result);
Array (
    [FirstName] => John
    [LastName] => Doe
    [Email] => johndoe@email.com
)
$Array1 = explode(',',$Array1);
$Array2 = explode(',',$Array2);

$result = array_combine(array_map('trim', $Array1), array_map('trim', $Array2));
<?php

$fields = ['FirstName', 'LastName', 'Email'];
$values = ['John', 'Doe', 'johndoe@email.com'];

foreach($fields as $k => $field)
    $result[$field] = $values[$k];

var_export($result);
array (
    'FirstName' => 'John',
    'LastName' => 'Doe',
    'Email' => 'johndoe@email.com',
)