Как динамически прокручивать массив структур

Мне нужно создать объект запроса из массива структур. Массив имеет около 200 ключей, а структуры внутри массива различаются по имени, размеру и глубине. Вот как выглядит один узел:

array of structures I need to loop thru and create query object

Я уже работаю над массивом [#i] .adGroupId и array [#i #]. UserStatus, но мне нужно проверить, существует ли структурное значение перед добавлением его в запрос. Например, критерий.text не всегда находится в структуре, поэтому мне нужно проверить это, но не знаю, как это сделать. Вот код до сих пор, но он всегда пропускает criterion.text и bids.maxCpc.amount.microAmount.






    
    
                    
        
            
        
            
        
        
    
    

Здесь создан объект запроса. Он говорит «тест», но надеется, что он даст значения:

Query object created from my crazy looping

2
nl ja de
как выглядит массив aKeywordsAll ? Если это массив, как бы он имел значение aKeywordAll [1] [1] ?
добавлено автор Matt Busche, источник
как выглядит массив aKeywordsAll ? Если это массив, как бы он имел значение aKeywordAll [1] [1] ?
добавлено автор Matt Busche, источник
как выглядит массив aKeywordsAll ? Если это массив, как бы он имел значение aKeywordAll [1] [1] ?
добавлено автор Matt Busche, источник
как выглядит массив aKeywordsAll ? Если это массив, как бы он имел значение aKeywordAll [1] [1] ?
добавлено автор Matt Busche, источник
не большая проблема в этом случае использования, но вместо listgetat я бы рекомендовал создать массив для доступа к нему через массив [loopNum2]
добавлено автор Matt Busche, источник
не большая проблема в этом случае использования, но вместо listgetat я бы рекомендовал создать массив для доступа к нему через массив [loopNum2]
добавлено автор Matt Busche, источник
не большая проблема в этом случае использования, но вместо listgetat я бы рекомендовал создать массив для доступа к нему через массив [loopNum2]
добавлено автор Matt Busche, источник
не большая проблема в этом случае использования, но вместо listgetat я бы рекомендовал создать массив для доступа к нему через массив [loopNum2]
добавлено автор Matt Busche, источник

4 ответы

Ваша проблема заключается в том, что функция StructKeyExists ищет ключ, буквально называемый «criterion.text» (например) - это возможно, а не ключ «текста» внутри ключа с именем «критерий». Я взломал UDF, который должен решить проблему для вас:

 
    
    

    

    
        
            
        
            
        
    
        
    
 

Затем вы можете вызвать Len (StructGetByKeyList (aKeywordsAll [loopnum], j)) вместо structKeyExists (aKeywordsAll [loopnum], j).

Для этой строки:

 

Использовать это:

 
5
добавлено
Отлично! Благодаря!
добавлено автор user1431633, источник

Ваша проблема заключается в том, что функция StructKeyExists ищет ключ, буквально называемый «criterion.text» (например) - это возможно, а не ключ «текста» внутри ключа с именем «критерий». Я взломал UDF, который должен решить проблему для вас:

 
    
    

    

    
        
            
        
            
        
    
        
    
 

Затем вы можете вызвать Len (StructGetByKeyList (aKeywordsAll [loopnum], j)) вместо structKeyExists (aKeywordsAll [loopnum], j).

Для этой строки:

 

Использовать это:

 
5
добавлено
Отлично! Благодаря!
добавлено автор user1431633, источник

Ваша проблема заключается в том, что функция StructKeyExists ищет ключ, буквально называемый «criterion.text» (например) - это возможно, а не ключ «текста» внутри ключа с именем «критерий». Я взломал UDF, который должен решить проблему для вас:

 
    
    

    

    
        
            
        
            
        
    
        
    
 

Затем вы можете вызвать Len (StructGetByKeyList (aKeywordsAll [loopnum], j)) вместо structKeyExists (aKeywordsAll [loopnum], j).

Для этой строки:

 

Использовать это:

 
5
добавлено
Отлично! Благодаря!
добавлено автор user1431633, источник

Ваша проблема заключается в том, что функция StructKeyExists ищет ключ, буквально называемый «criterion.text» (например) - это возможно, а не ключ «текста» внутри ключа с именем «критерий». Я взломал UDF, который должен решить проблему для вас:

 
    
    

    

    
        
            
        
            
        
    
        
    
 

Затем вы можете вызвать Len (StructGetByKeyList (aKeywordsAll [loopnum], j)) вместо structKeyExists (aKeywordsAll [loopnum], j).

Для этой строки:

 

Использовать это:

 
5
добавлено
Отлично! Благодаря!
добавлено автор user1431633, источник