分解然后合并数组

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];
  }
?>