我无法阅读数组形式的唯一电子邮件


I am unable to read the only emails in the form of array

我有一个数组。该数组分配给一个变量,但我无法只读该数组中的电子邮件。

$users = array(3) { [0]=> object(stdClass)#404 (4) { ["guid"]=> string(1) "2" ["name"]=> string(13) "xyz" ["username"]=> string(13) "xyz" ["email"]=> string(23) "xyz@gmail.com" } [1]=> object(stdClass)#405 (4) { ["guid"]=> string(3) "138" ["name"]=> string(12) "wxyz" ["username"]=> string(5) "wxyz" ["email"]=> string(21) "wxyz@gmail.com" } [2]=> object(stdClass)#406 (4) { ["guid"]=> string(3) "126" ["name"]=> string(13) "xxxx" ["username"]=> string(7) "xxxx" ["email"]=> string(17) "xxxx@gmail.com" } }

我需要这样的输出

array(3) { [0]=> string(22) "xyz@gmail.com" [1]=> string(19) "wxyz@gmail.com"  [3]=> string(19) "xxxx@gmail.com"}

请给我答复。预演,非常感谢。

您可以简单地使用这里的array_walk函数,如

$result = [];
array_walk($users,function($v,$k)use(&$result){
    $result[$k] = $v->email;
});

使用array_map

$result = array_map(function($v){return $v->email;},$arr);

您可以尝试preg_grep()仅从数组返回特定模式。

preg_grep( "your Pattern", $array);

检查下面的示例

$email_only_array = preg_grep("/^[A-z0-9_'-]+[@][A-z0-9_'-]+([.][A-z0-9_'-]+)+[A-z.]{2,4}$/", $your_array);

的例子:

// Your array
$array = array("john","wxyz","aaa@mail.com", "wxyz", "bbb@mail.com", "ccc@mail.com");
   // validating the value as array     
$email_only_array = preg_grep("/^[A-z0-9_'-]+[@][A-z0-9_'-]+([.][A-z0-9_'-]+)+[A-z.]{2,4}$/", $array);    
   // Output
print_r($email_only_array);

输出
Array ( [2] => aaa@mail.com [4] => bbb@mail.com [5] => ccc@mail.com )

也参考这个,http://php.net/manual/en/function.preg-grep.php