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',
)