詳細検索

Eliminar o aninhamento de arrays associativos com apenas um elemento

Avatar
por maeno
2 min de leitura

Eliminar o aninhamento de arrays associativos com apenas um elemento
Traduzido do 日本語 • Ver original

Funções do WordPress (especialmente na classe $wpdb. método 'get_results()', etc.), e se o array de retorno tem apenas um elemento, mas é um array associativo, há vários casos em que loops aninhados são usados para recuperar o valor. Ele tem sido redundante em código e ineficiente por muito tempo... Encontrei uma forma de melhorar dessa vez, então pensei em deixar aqui como uma DICA.

$array = array( 
    Array( 
        'key_1' => 'value_1',  
        'key_2' => 'value_2',  
    ),  
); 

foreach ($array como $nested_array) { 
    foreach ($nested_array as $key => $value) { 
        Echo 'Array["' . $key . '"] => "' . $value . '"<br />'; 
    }
}

Até agora, eu costumava obter valor aninhando o loop foreach assim (não inútil, mas também não eficiente) aninhando o array associativo... Então, me pergunto se consigo resolver o aninhamento desse array associativo e loop e escrever um processo simples... Tentei várias funções do array PHP. Você pode usar funções que não usa muito, como 'array_reduce()' ou 'array_walk()', e pode montar suas próprias funções para resolver o aninhamento, mas você precisa preparar sua própria função, o que não é inteligente... Tentei tentativa e erro para ver se conseguia resolver com apenas uma linha, e consegui! Você pode obter o elemento líder com 'array_shift()' e sobrescrever a variável original do array.

$array = array_shift($array); 

Mas se isso for tudo, até mesmo um ou mais elementos do array serão sobrescrevidos, então vou fazer o julgamento do número de elementos.

$array = (contagem($array) == 1) ? array_shift($array) : $array; 

Quando reescrevi o primeiro código usando esse código,

$array = array( 
    Array( 
        'key_1' => 'value_1',  
        'key_2' => 'value_2',  
    ),  
); 

$array = (contagem($array) == 1) ? array_shift($array) : $array; 
foreach ($array as $key => $value) { 
    Echo 'Array["' . $key . '"] => "' . $value . '"<br />'; 
}

Bem, foi muito revigorante. Meu moyamoya também melhorou.

Related Articles