How is the array created in the first place? Perhaps you can deal with your problem directly
$arr = array();
while ($something)
{
$data = get_next_element();
$arr[$data[$name]] = $data;
}
Would give something like
Array
(
[Square] => Array
(
[Id] => 4
[EffectiveTo] =>
[EffectiveFrom] =>
[Name] => Square
[New_Id] => 101
[Location_Id] => 4
)
[Triangle] => Array
(
[Id] => 6
[EffectiveTo] =>
[EffectiveFrom] =>
[Name] => Triangle
[New_Id] => 101
[Location_Id] => 6
)
[Circle_floor] => Array
(
[Id] => 7
[EffectiveTo] =>
[EffectiveFrom] =>
[Name] => Circle_floor
[New_Id] => 101
[Location_Id] => 3
)
)