我有一个以下格式的数组:
Array
(
[accountID] => Array
(
[0] => 412216
[1] => 396408
[2] => 522540
)
[mailBody] => Array
(
[0] => 'We are glad to have contact you'
[1] => 'Thank you for your cooperation'
[2] => 'One of our customer service representatives will contact you soon'
)
[mailAttachments] => Array
(
[0] => 'URL1'
[1] => 'URL1'
[2] => 'URL1'
)
)
此数组从邮箱中提取一些信息。我想用等效的mailBody和mailAttachments提取每个accountID。 非常感谢您的回复。
答案 0 :(得分:1)
不漂亮但有效(如果我理解你的目的):
$mails = array();
for ($i = 0, $cnt = count($array['accountID']); $i < $cnt; $i++) {
$mails[] = array(
'accountId' => $array['accountID'][$i],
'mailBody' => $array['mailBody'][$i],
'mailAttachments' => $array['mailAttachments'][$i]
);
}
答案 1 :(得分:1)
PHP为此构建了一个函数,名称为array_map
。如果回调是NULL
,则会创建所需数组的组合。因为我很懒,我正在使用call_user_func_array
将参数传递给函数。
$array
是你的数组:
$arranged = call_user_func_array('array_map', array(NULL) + $array);
答案 2 :(得分:0)
$mails = array_map(function ($id, $body, $attachments) {
return compact('id', 'body', 'attachments');
}, $array['accountId'], $array['mailBody'], $array['mailAttachments']);
请注意,此语法需要PHP 5.3。
这会重新排列数组,因此所有属于一起的项目都在一个数组中。然后,您可以遍历数组并随意执行任何操作。
foreach ($mails as $mail) {
// use $mail['id'], $mail['body'], $mail['attachments'] ...
}
答案 3 :(得分:0)
使用数组索引。
$i = 0
$accountID[$i];
$mailBody[$i];
$mailAttachments[$i];
但更好的设计是尽可能将所有这些变量包装到一个数组中。类似的东西:
$accounts = array();
$account = array(
"id" => "",
"mailBody" => "",
"mailAttachments" => "",
);
$accounts[] = $account;