Criando uma instância de um par de valores de chave PHP sem uma matriz
-
22-09-2019 - |
Pergunta
Estou escrevendo uma função recursiva para construir uma matriz multidimensional. Basicamente, o problema é o seguinte:
function build($term){
$children = array();
foreach ( $term->children() as $child ) {
$children[] = build($child);
}
if(!count($children)){
return $term->text();
} else {
return $term->text() => $children; //obviously, this doesn't work
}
}
Pensamentos? Sei que poderia reescrever a estrutura da função para fazê -la funcionar, mas parece que isso deve ser desnecessário.
Solução
Uma matriz é o único contêiner de pares de valor-chave que o PHP tem a oferecer. Portanto, você precisa usar uma matriz se desejar sua função (pode ser recursiva ou não) para retornar um par de valores-chave.
return array($term->text() => $children);
Outras dicas
function build($term){
$children = array();
foreach ( $term->children() as $child ) {
$children += build($child);
}
if(!count($children)){
return $term->text();
} else {
return array($term->text() => $children); //obviously, this doesn't work
}
}
Pelo que entendi da pergunta, é assim que deve ser.
Anexando a recursão e retornando uma matriz.
EDIT: Como um aparte, você pode estar melhor retornando uma matriz, mesmo que a contagem ($ crianças) == 0, isso ficaria em linha todos os seus tipos. caso contrário, você pode obter todos os tipos de erros na linha:
if(!count($children)){
return array($term->text() => null);
Você pode devolvê -lo assim:
return array($term->text() => $children);
Embora não seja o que você perguntou. Eu acho que você não pode fazer isso sem reescrever partes da sua função, de uma maneira ou de outra.