That worked great. I'll say that the mysterious reason behind my not wanting to use a foreach has something to do with me occasionally seeing a memory error that brings down my site and that points to the existing foreach code which was inside a smarty template.
So....
I'm not sure this will be more efficient, and I have now read about there being some issues with memory leaks and the create_function(). So whatever caused my memory leak before may do the same thing again. I'll be watching. At least there's a few less lines of code. (tho a few more comments)
I am not completely sure with this notation:
$elt['parameterId']==$n;
I assume that is actually somehow doing a foreach and only returning when it is true. Is that right?
I ended up with code that looked like this:
$array = array(
array('parameterId' => '169', 'fieldName' => 'nothing'),
array('parameterId' => '177', 'fieldName' => 'something'),
array('parameterId' => '174', 'fieldName' => 'gimme')
);
$fields = $array;
$fieldId = 177; //yes, set somewhere else as a var.
$fieldArray = array_filter($fields, create_function('$fields', 'return $fields["parameterId"]==' . $fieldId . ';'));
$field = current($fieldArray); //since it's always the only one returned
$urlField = $field['fieldName'];
Thanks again