爆炸然后合并数组

时间:2015-01-23 15:46:19

标签: php 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]等等。

如何合并这两个数组(在爆炸之后)并在循环中获取每个数据线(名称和电子邮件)的数据?

5 个答案:

答案 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);

    ?>