Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve galera,
Depois de quase dois anos estou de volta e com um dúvida...
Tenho um array com 38 posições, mas só vou postar a primeira para não fica muito extenso o post.
array(38) {
[836]=>
array(13) {
[13]=>
int(732)
[12]=>
array(1) {
[1360]=>
int(208)
}
[11]=>
array(1) {
[2372]=>
int(32)
}
[10]=>
array(1) {
[2372]=>
array(1) {
[841]=>
int(27)
}
}
[9]=>
array(1) {
[4009]=>
int(67)
}
[8]=>
array(1) {
[4903]=>
int(9)
}
[7]=>
array(1) {
[5747]=>
int(1)
}
[6]=>
array(1) {
[6199]=>
int(385)
}
[5]=>
array(1) {
[6966]=>
int(454)
}
[4]=>
array(1) {
[7728]=>
int(528)
}
[3]=>
array(1) {
[7728]=>
array(1) {
[1360]=>
int(4)
}
}
[2]=>
array(1) {
[7728]=>
array(1) {
[1598]=>
int(602)
}
}
[1]=>
array(1) {
[7728]=>
array(1) {
[2372]=>
int(664)
}
}
}
Preciso percorrer ele todo e encontrar o menor valor, mas mantendo a sua estrutura... Loucura né kkkk, pois calma, vou explicar melhor:
- Para encontrar o menor valor utilizei o código abaixo
array_walk_recursive($array,function($v) use(&$a){
$a[] = $v;
});
return min($a);
- E depois de descobrir o menor valor é **1**, preciso recuperar a sua estrutura:
[836]=>
array(13) {
[7]=>
array(1) {
[5747]=>
int(1)
Alguém pode me ajudar???
Salve galera,
Consegui resolver o problema de identificar a estrutura do array pelo menor valor com este código abaixo:
function buscaMelhorCorte($min, $arr, $strict=false, $path=array())
{
if (!is_array($arr)) {
return false;
}
foreach ($arr as $key => $val) {
if (is_array($val) && $subPath = buscaMelhorCorte($min, $val, $strict, $path)) {
$path = array_merge($path, array($key), $subPath);
return $path;
} elseif ((!$strict && $val == $min) || ($strict && $val === $min)) {
$path[] = $key;
return $path;
}
}
}
Porém agora me apareceu mais um problema...
Caso tenha mais de um valor menor preciso pegar o de maior indice, exemplo:
Tenho um array com 37 posições, mas vou cortar o que não interessa:
[836]=>
array(13) {
...
[7]=>
array(1) {
[5747]=>
int(1)
}
...
}
[3688]=>
array(3) {
[3]=>
int(536)
[2]=>
array(1) {
[4223]=>
int(1)
}
...
}
[4619]=>
array(2) {
[2]=>
array(1) {
[2361]=>
int(1)
}
...
}
Esses 3 trechos terminam com 1, na função acima ele me exibe o trecho da chave [836] porém preciso da chave maior [4619] ...
Poderiam me ajudar?
Obrigado galera,
Consegui resolver o problema com o array...