A few issues I saw. First up, you never call mysql_query. I am not sure if you do it later, but $query will get overwritten by the time you call it later. Second, the variables may not be being parsed correctly, array's can be funny inside of double quotes, so I find it best to use the { } around them so that you know they will get parsed properly. I also made it to use extended inserts, so you only have to make 1 mysql_query call, which will be way more efficient and less taxing on the mysql server.
$family= array("Lion", "Cougar", "Cheetah");
$name= array("Leo", "Growler", "Charly");
$age= array(3, 4, 3);
$cnt = count($family);
$query = array();
for ($i=0; $i < $cnt; $i++) {
$query[] = "(NULL, '{$family[$i]}', '{$name[$i]}', {$age[$i]})";
}
$query = 'INSERT INTO cats VALUES ' . implode(',',$query) . ';';
mysql_query($query) or trigger_error('Error inserting: ' . mysql_error());
Questions let me know.