【问题标题】:make new array from existing array based on a delimiter in php根据 php 中的分隔符从现有数组创建新数组
【发布时间】:2015-02-18 11:20:23
【问题描述】:

我正在编写一个登录脚本,其中用户名是一个电子邮件地址,用户可以拥有多个可以登录的电子邮件地址。

我正在创建一个基于 MySQL 选择 LIKE 的数组,因为用户的所有电子邮件地址都在同一列上,以 ## 作为分隔符。

Array (
    [0] => test@yahoo.com 
    [1] => testabc@yahoo.com##test123@yahoo.com 
    [2] => testing@yahoo.com##abcd@yahoo.com
)

我想获取这个数组,然后我可以将用户输入与确切的电子邮件地址进行比较:

Array ( 
    [0] => test@yahoo.com 
    [1] => testabc@yahoo.com 
    [2] => test123@yahoo.com 
    [3] => testing@yahoo.com 
    [4] => abcd@yahoo.com
)

谢谢!

【问题讨论】:

  • 您可以使用explode()获取电子邮件地址数组。
  • 如何在 PHP 端拆分它,即$arrMail= explode('##', $row['mail']);。我强烈建议重写您的用户数据库,而不是以这种方式存储电子邮件。
  • 如果用户可以注册多个电子邮件地址,则它们需要位于单独的表中。在单列中使用分隔符分隔数据通常是个坏主意。
  • 虽然使用分隔符和以这种方式存储电子邮件地址可能不是一个好的解决方案,但使用三个点 (...) 作为分隔符可能比 ## 更好,因为我读到了字符点的重复不允许在电子邮件地址中使用。 en.wikipedia.org/wiki/Email_address

标签: php arrays delimiter


【解决方案1】:
<?php

$arr = array(); //your array, your values.
$arrGonnaBe = array(); 
foreach($arr as $a){

    $exp = explode("##",$a);
    if(count($exp)>1){
        foreach($exp as $e){
            array_push($arrGonnaBe,$e);
        }
    }else{
        array_push($arrGonnaBe,$exp[0]);
    }
} 
print_r($arrGonneBe);
?>

【讨论】:

    猜你喜欢
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    相关资源
    最近更新 更多