分解然后合并数组
Explode and then merge arrays
我有两个字符串,一个包含以逗号分隔的姓名,另一个包含以逗号分隔的电子邮件地址。
我现在希望我的最终结果能够复制行为,就好像我使用以下命令从数据库中获取了这些值一样:
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo $row['name'].'<br />'.$row['email'];
}
所以我有例如这些字符串:
email1@domain.com,email2@domain.com,email3@domain.com
和
name1,name2,name3
然后可以将它们分解成值数组。现在,在炸掉它们之后,
我希望能够创建一个循环,在每个循环中,我可以将 $name[0]
和 $email[0]
放在一起,将 $name[1]
和 $email[1]
放在一起,等等
我如何合并这两个数组(在分解它们之后)并循环获取每个数据对(姓名和电子邮件)的数据?
我想你想要这样的东西:
$output = array();
for ($i = 0; $i < count($names); $i++) {
$output[] = $names[$i] . ' ' . $emails[$i];
}
print_R($output);
我认为您应该使用内置的 explode
函数,它允许您通过使用分隔符(逗号)将字符串拆分为数组:
$names = explode(",",$row['name']);
$email = explode(",",$row['email']);
为了合并它们你应该使用这样的东西
$Array = array();
for ($j = 0; $j < count($names); $j++) {
$Array[] = [$names[$j],$email[$j]];
}
$emails = 'email1@domain.com,email2@domain.com,email3@domain.com';
$emails = explode(',', $emails);
$names = 'name1,name2,name3';
$names = explode(',', $names);
您可以使用 array_combine()
如下:
$combined = array_combine($names, $emails);
foreach($combined as $name => $email){
echo $name, ' : ', $email, '<br/>';
}
这与您的问题有点相关,但前提是您希望通过键访问该值(例如,通过提供的电子邮件访问姓名):
<?php
$emails = 'email1@gmail.com,email2@gmail.com,email3@gmail.com';
$names = 'name1,name2,name3';
$arrayEmails = explode(',',$emails);
$arrayNames = explode(',',$names);
$result = array_combine( $arrayEmails, $arrayNames);
print_r($result);
?>
所以如果我没理解错的话,你正在将字符串(我们称它们为电子邮件和名称)转换为两个数组(我们称它们为 arrEmail 和 arrName),现在你想获得一个包含合并数据集的数组.(如果不检查这个,创建数组应该很容易:manual for php explode function)
如果是这样,我会根据你的两个数组的长度创建一个 for 循环。在循环中,我将提取 arrEmail 和 arrName 的值 i,并将信息放入二维数组中。也许是这样的:
它应该可以工作,但我很久没有测试它了,所以如果不行请给我留言。
<?php
$arrEmail = array();
$arrName = array();
$arrGoal;
$arrLength = count($arrName);
//creating two-dimensional Array
for($i = 0; $i < $arrLength; $i++){
$arrGoal[$i] = array($arrName[$i], $arrEmail[$i]);
//should look something like this ((name, email),(name, email)…)
}
$arrGoalLength = count($arrGoal);
//accessing Array
//1. dimension
for($i = 0; $i < $arrGoalLength; $i++){
//2. dimension
//Variables should be global (but aren't)
$newName = $arrGoal[$i][0];
$newEmail = $arrGoal[$i][1];
}
?>
我有两个字符串,一个包含以逗号分隔的姓名,另一个包含以逗号分隔的电子邮件地址。
我现在希望我的最终结果能够复制行为,就好像我使用以下命令从数据库中获取了这些值一样:
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo $row['name'].'<br />'.$row['email'];
}
所以我有例如这些字符串:
email1@domain.com,email2@domain.com,email3@domain.com
和
name1,name2,name3
然后可以将它们分解成值数组。现在,在炸掉它们之后,
我希望能够创建一个循环,在每个循环中,我可以将 $name[0]
和 $email[0]
放在一起,将 $name[1]
和 $email[1]
放在一起,等等
我如何合并这两个数组(在分解它们之后)并循环获取每个数据对(姓名和电子邮件)的数据?
我想你想要这样的东西:
$output = array();
for ($i = 0; $i < count($names); $i++) {
$output[] = $names[$i] . ' ' . $emails[$i];
}
print_R($output);
我认为您应该使用内置的 explode
函数,它允许您通过使用分隔符(逗号)将字符串拆分为数组:
$names = explode(",",$row['name']);
$email = explode(",",$row['email']);
为了合并它们你应该使用这样的东西
$Array = array();
for ($j = 0; $j < count($names); $j++) {
$Array[] = [$names[$j],$email[$j]];
}
$emails = 'email1@domain.com,email2@domain.com,email3@domain.com';
$emails = explode(',', $emails);
$names = 'name1,name2,name3';
$names = explode(',', $names);
您可以使用 array_combine()
如下:
$combined = array_combine($names, $emails);
foreach($combined as $name => $email){
echo $name, ' : ', $email, '<br/>';
}
这与您的问题有点相关,但前提是您希望通过键访问该值(例如,通过提供的电子邮件访问姓名):
<?php
$emails = 'email1@gmail.com,email2@gmail.com,email3@gmail.com';
$names = 'name1,name2,name3';
$arrayEmails = explode(',',$emails);
$arrayNames = explode(',',$names);
$result = array_combine( $arrayEmails, $arrayNames);
print_r($result);
?>
所以如果我没理解错的话,你正在将字符串(我们称它们为电子邮件和名称)转换为两个数组(我们称它们为 arrEmail 和 arrName),现在你想获得一个包含合并数据集的数组.(如果不检查这个,创建数组应该很容易:manual for php explode function)
如果是这样,我会根据你的两个数组的长度创建一个 for 循环。在循环中,我将提取 arrEmail 和 arrName 的值 i,并将信息放入二维数组中。也许是这样的:
它应该可以工作,但我很久没有测试它了,所以如果不行请给我留言。
<?php
$arrEmail = array();
$arrName = array();
$arrGoal;
$arrLength = count($arrName);
//creating two-dimensional Array
for($i = 0; $i < $arrLength; $i++){
$arrGoal[$i] = array($arrName[$i], $arrEmail[$i]);
//should look something like this ((name, email),(name, email)…)
}
$arrGoalLength = count($arrGoal);
//accessing Array
//1. dimension
for($i = 0; $i < $arrGoalLength; $i++){
//2. dimension
//Variables should be global (but aren't)
$newName = $arrGoal[$i][0];
$newEmail = $arrGoal[$i][1];
}
?>