<?php
$flat = [
['id' => 100, 'parent_id' => 0, 'name' => 'root'],
['id' => 101, 'parent_id' => 100, 'name' => 'ch-1'],
['id' => 102, 'parent_id' => 101, 'name' => 'ch-1-1'],
['id' => 103, 'parent_id' => 101, 'name' => 'ch-1-2'],
['id' => 104, 'parent_id' => 101, 'name' => 'ch-1-2'],
['id' => 105, 'parent_id' => 104, 'name' => 'ch-1-2'],
['id' => 106, 'parent_id' => 101, 'name' => 'ch-1-2'],
['id' => 107, 'parent_id' => 101, 'name' => 'ch-1-2'],
];
$index = array_search(101, array_column($flat, 'parent_id'));
var_dump($flat[$index]);
?>
Мысль:
Поскольку вы сами строите массив, почему бы вам не рассмотреть структуру, похожую на
$flat[$parent_id][] = [
'id' => $child_id,
'name' => $child_name
];
Тогда вы можете получить ребенка дерево (и) из основного дерева следующим образом
$child_tree = $flat[$parent_id];