It would make more sense to me to get both the names and the prices the same way, with DOMDocument. You seem to be duplicating logic without duplicating code, which, come to think of it, I don't think I've seen before, thanks. 🙂
Also, I often find it easier to play with an array of associative arrays rather than an associative array of arrays. So:
$good = array(
array('name' => 'Name One', 'price' => '123'),
array('name' => 'Name Two', 'price' => '321')
);
$bad = array(
'name' => array('Name One', 'Name Two'),
'price' => array('123', '321')
);
but I guess it depends on how you're planning to use the data later.