<?php
$document = new stdClass();
$document->authors = [
[
'id' => "18141",
"userId" => null,
"image" => '',
'firstName' => 'John',
'lastName' => 'Inazu',
'publicEmail' => null,
'publicWebsite' => null,
'publicFacebook' => null,
'publicTwitterUsername' => null,
'publicEndnote' => null,
'byline' => 'John Inazu',
'extraData' => null
]
];
doTheThings($document);
function doTheThings($document) {
$authors = array();
$authorEmails = array();
$authorExtra = array();
$bylineExtra = array();
$documentAuthors = array();
foreach($document->authors as $author) {
$documentAuthors []= (array)$author;
}
foreach($documentAuthors as $key => $author) {
$temp = trim(str_replace(array($author['firstName'], $author['lastName']), '', $author['byline']));
if(in_array($temp, $bylineExtra)) {
foreach($bylineExtra as $key2 => $value) {
if($value == $temp) {
$documentAuthors[$key2]['byline'] = trim(str_replace($temp, '', $documentAuthors[$key2]['byline']));
}
}
}
$bylineExtra[$key] = $temp;
}
foreach($documentAuthors as $key => $author) {
if(!empty($author['byline'])) {
$authors []= $author['byline'];
} else {
$authors []= $author['firstName'].' '.$author['lastName'];
}
$authorEmails []= $author['publicEmail'];
//lump all our other author data plus our "extra" author data together
$tmp = $author;
unset($tmp['firstName']);
unset($tmp['lastName']);
unset($tmp['publicEmail']);
unset($tmp['byline']);
unset($tmp['extraData']);
$author['extraData'] = array_merge(json_decode(json_encode($author['extraData']), true), $tmp);
$authorExtra []= $author['extraData'];
}
$authorName = implode(', ',$authors);
$authorEmails = implode(', ',$authorEmails);
echo '<pre>';
print_r($authorName);
print_r($authorEmails);
print_r($authorExtra);
}
preferences:
49.24 ms | 402 KiB | 5 Q