Сорри за не грамотный код. Вроде работает.
<?
$str = '[
{ "firstName": "John", "lastName": "Doe", "birth": "1987-01-01" },
{ "firstName": "Anna", "lastName": "Doe", "birth": "1999-03-03" },
{ "firstName": "Peter", "lastName": "Doe", "birth": "1989-02-02" },
{ "firstName": "Al", "lastName": "Sums", "birth": "1980-04-04" }
]';
$arr = json_decode($str);
$arr_search = array();
$count = 0;
foreach ($arr as $key => $value) {
if ($value->lastName == 'Doe') {
$arr_search[$count] = $value->birth;
}
$count++;
}
asort($arr_search);
$first_key = key($arr_search);
var_dump($arr[$first_key]);
?>