Вы говорите, что структура "account" называется child, которая является массивом. Это не имеет никакого смысла. Если «child» - это массив, он не может быть структурой. Если это структура, она не может быть массивом. Массив может содержать структуры, а структуры могут содержать массивы.
Структура - это карта или хеш, другими словами, она состоит из пар имя-значение. Массив - это набор или список значений. Вы можете зациклить их или получить к ним доступ через их числовой индекс.
Давайте сделаем учетную запись структурой, а потом - массивом.
<cfset Account = structNew() />
<cfset Account.Child = ArrayNew(1) />
Account - это структура, поэтому вы можете использовать для нее функции struct (structKeyExists, structInsert).
Account.Child - это массив, поэтому вы можете использовать для него функции массива (arrayAppend и т. Д.). Account.Child, будучи массивом, может содержать практически любое значение в записи, включая сложные значения. Итак, давайте сделаем Account.Child массивом структур.
скажем, z в вашем примере - это структура, которая выглядит примерно так:
<cfset z = structNew() />
<cfset z.id = 1 />
<cfset z.name = "James" />
Вы можете добавить это в Account.Child следующим образом:
<cfset ArrayAppend(account.child,z) />
Или вы можете сделать это напрямую через индекс:
<cfset account.child[numChildren] = z />
СЕЙЧАС. Допустим, вы хотите сохранить Account в структуре, но вы хотите иметь 1 ключ для каждого дочернего элемента в структуре, а не использовать массив. Вы можете сделать это с помощью динамического ключа, например:
<cfset Account["child_#numChildren#"] = z />
К вашему сведению, structInsert, как правило, является ненужной функцией.