我有两个字符串,一个包含以逗号分隔的名称,另一个包含以逗号分隔的电子邮件地址。
我现在希望我的最终结果能够复制行为,就好像我从数据库中获取了这些值:
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]
等等。
如何合并这两个数组(在爆炸之后)并在循环中获取每个数据线(名称和电子邮件)的数据?
答案 0 :(得分:2)
我想你想要这样的东西:
$output = array();
for ($i = 0; $i < count($names); $i++) {
$output[] = $names[$i] . ' ' . $emails[$i];
}
print_R($output);
答案 1 :(得分:2)
$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/>';
}
答案 2 :(得分:2)
因此,如果我理解你正确,你正在转换你的字符串(让我们称之为电子邮件和名称)两个数组(让我们称之为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];
}
?>
答案 3 :(得分:0)
我认为您应该使用内置的explode
函数,它允许您通过使用分隔符(逗号)将字符串转换为数组:
$names = explode(",",$row['name']);
$email = explode(",",$row['email']);
要合并它们,你应该使用类似的东西
$Array = array();
for ($j = 0; $j < count($names); $j++) {
$Array[] = [$names[$j],$email[$j]];
}
答案 4 :(得分:0)
这与您的问题有关,但仅当您想通过密钥访问该值时(例如,通过提供的电子邮件访问该名称):
<?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);
?>