我有一个以两种方式之一返回 JSON 的 post 调用:
$json1 = '{"found":1,"email":"email1@domain.com","error":"","rd":"email2@domain.com"}';
$json2 = '{"found":1,"email":"email1@domain.com,email2@domain.com","error":"","rd":"email3@domain.com,email4@domain.com"}';
在第一种情况下,email
和rd
参数每个都只有一个电子邮件地址。在第二个中,同样的两个参数每个都有多个接收者。
我需要从每个参数中获取电子邮件并将其添加到一个已经存在的数组中:
$recipients = array('support@domain.com');
我可以使用以下代码让它与 $json1
变量一起工作:
array_push($recipients, $obj->{'rd'}, $obj->{'email'});
第二个 JSON 选项很少发布,但我仍然需要相同的代码来处理这两个实例。目前,如果我将上面的代码与第二个 JSON 数据一起使用,它会返回:
Array
(
[0] => support@sculpturehospitality.com
[1] => email3@domain.com,email4@domain.com
[2] => email1@domain.com,email2@domain.com
)
在同一参数中有多个电子邮件。有没有人知道我如何在每个数组项中分离电子邮件?
一个工作示例:
http://sandbox.onlinephpfunctions.com/code/24c4a1eaea98566b65cd36e221dd1f185e820ea6
最佳答案
只是explode()
您的属性用逗号分隔并将它们添加到数组中,例如
$recipients = array_merge($recipients, explode(",", $obj->rd)
, explode(",", $obj->email) /*, ... */);
另请注意,我现在使用 array_merge()
而不是 array_push()
,因为您不再有单个值,而是一个包含新元素的数组:
array_push():
//Single value $array = ["First element"]; $singleValue = "Second element"; array_push($array, $singleValue);
输出:
Array( [0] => First element [1] => Second element)
//Array $array = ["First element"]; $secondArray= ["Second element", "And third element"]; array_push($array, $secondArray);
输出:
Array( [0] => First element [1] => Array( [0] => Second element [1] => And third element))
array_merge():
//Single value $array = ["First element"]; $singleValue = "Second element"; $array = array_merge($array, $singleValue);
输出:
Warning: array_merge(): Argument #2 is not an array
//Array $array = ["First element"]; $secondArray= ["Second element", "And third element"]; $array = array_merge($array, $secondArray);
输出:
Array( [0] => First element [1] => Second element [2] => And third element)
关于php - 如何使用 PHP 将单个数组项推送到另一个数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34319423/