Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Tenho a seguinte estrutura:
$selecionaPERMs = mysql_query("select * from permissoes where id_arq_perm = '$idarq' group by id_perm ASC");
while($linhaUSRJaPermitido = mysql_fetch_array($selecionaPERMs)){
$permitidosarqs[]= $linhaUSRJaPermitido['id_usuario_perm'];
if (in_array($id, (array)$permitidosarqs)) {
$tpermisso = "issoisso";
}else{
$tpermisso ="necas";
}
}
Esse código deveria me retornar "issoisso" se encontrar no array o valor da variável $id ou "necas" se não encontrar... O problema é que ele nunca encontra; mas tenho certeza que no array há esse valor...
Quem poderá me ajudar?
>
Adicione antes do IF:
print '<pre>'; print_r( $permitidosarqs );
e poste o resultado.
Muito grato pela interação, Bruno.
Segue:
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
)
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
[12] => 66
[13] => 64
[14] => 65
[15] => 61
[16] => 73
[17] => 62
[18] => 75
[19] => 74
[20] => 76
[21] => 63
[22] => 67
)
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
[12] => 66
[13] => 64
[14] => 65
[15] => 61
[16] => 73
[17] => 62
[18] => 75
[19] => 74
[20] => 76
[21] => 63
[22] => 67
[23] => 75
[24] => 64
[25] => 65
[26] => 61
[27] => 66
[28] => 73
[29] => 62
[30] => 74
[31] => 76
[32] => 63
[33] => 67
)
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
[12] => 66
[13] => 64
[14] => 65
[15] => 61
[16] => 73
[17] => 62
[18] => 75
[19] => 74
[20] => 76
[21] => 63
[22] => 67
[23] => 75
[24] => 64
[25] => 65
[26] => 61
[27] => 66
[28] => 73
[29] => 62
[30] => 74
[31] => 76
[32] => 63
[33] => 67
[34] => 3
)
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
[12] => 66
[13] => 64
[14] => 65
[15] => 61
[16] => 73
[17] => 62
[18] => 75
[19] => 74
[20] => 76
[21] => 63
[22] => 67
[23] => 75
[24] => 64
[25] => 65
[26] => 61
[27] => 66
[28] => 73
[29] => 62
[30] => 74
[31] => 76
[32] => 63
[33] => 67
[34] => 3
[35] => 64
[36] => 65
[37] => 61
[38] => 66
[39] => 73
[40] => 62
[41] => 75
[42] => 74
[43] => 76
[44] => 63
[45] => 67
)
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
[12] => 66
[13] => 64
[14] => 65
[15] => 61
[16] => 73
[17] => 62
[18] => 75
[19] => 74
[20] => 76
[21] => 63
[22] => 67
[23] => 75
[24] => 64
[25] => 65
[26] => 61
[27] => 66
[28] => 73
[29] => 62
[30] => 74
[31] => 76
[32] => 63
[33] => 67
[34] => 3
[35] => 64
[36] => 65
[37] => 61
[38] => 66
[39] => 73
[40] => 62
[41] => 75
[42] => 74
[43] => 76
[44] => 63
[45] => 67
[46] => 76
[47] => 64
[48] => 65
[49] => 61
[50] => 66
[51] => 73
[52] => 62
[53] => 75
[54] => 74
[55] => 63
[56] => 67
)
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
[12] => 66
[13] => 64
[14] => 65
[15] => 61
[16] => 73
[17] => 62
[18] => 75
[19] => 74
[20] => 76
[21] => 63
[22] => 67
[23] => 75
[24] => 64
[25] => 65
[26] => 61
[27] => 66
[28] => 73
[29] => 62
[30] => 74
[31] => 76
[32] => 63
[33] => 67
[34] => 3
[35] => 64
[36] => 65
[37] => 61
[38] => 66
[39] => 73
[40] => 62
[41] => 75
[42] => 74
[43] => 76
[44] => 63
[45] => 67
[46] => 76
[47] => 64
[48] => 65
[49] => 61
[50] => 66
[51] => 73
[52] => 62
[53] => 75
[54] => 74
[55] => 63
[56] => 67
[57] => 3
)
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
[12] => 66
[13] => 64
[14] => 65
[15] => 61
[16] => 73
[17] => 62
[18] => 75
[19] => 74
[20] => 76
[21] => 63
[22] => 67
[23] => 75
[24] => 64
[25] => 65
[26] => 61
[27] => 66
[28] => 73
[29] => 62
[30] => 74
[31] => 76
[32] => 63
[33] => 67
[34] => 3
[35] => 64
[36] => 65
[37] => 61
[38] => 66
[39] => 73
[40] => 62
[41] => 75
[42] => 74
[43] => 76
[44] => 63
[45] => 67
[46] => 76
[47] => 64
[48] => 65
[49] => 61
[50] => 66
[51] => 73
[52] => 62
[53] => 75
[54] => 74
[55] => 63
[56] => 67
[57] => 3
[58] => 64
[59] => 65
[60] => 61
[61] => 66
[62] => 73
[63] => 62
[64] => 74
[65] => 63
[66] => 67
[67] => 75
[68] => 76
)
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
[12] => 66
[13] => 64
[14] => 65
[15] => 61
[16] => 73
[17] => 62
[18] => 75
[19] => 74
[20] => 76
[21] => 63
[22] => 67
[23] => 75
[24] => 64
[25] => 65
[26] => 61
[27] => 66
[28] => 73
[29] => 62
[30] => 74
[31] => 76
[32] => 63
[33] => 67
[34] => 3
[35] => 64
[36] => 65
[37] => 61
[38] => 66
[39] => 73
[40] => 62
[41] => 75
[42] => 74
[43] => 76
[44] => 63
[45] => 67
[46] => 76
[47] => 64
[48] => 65
[49] => 61
[50] => 66
[51] => 73
[52] => 62
[53] => 75
[54] => 74
[55] => 63
[56] => 67
[57] => 3
[58] => 64
[59] => 65
[60] => 61
[61] => 66
[62] => 73
[63] => 62
[64] => 74
[65] => 63
[66] => 67
[67] => 75
[68] => 76
[69] => 35
[70] => 64
[71] => 65
[72] => 61
[73] => 66
[74] => 73
[75] => 62
[76] => 74
[77] => 76
[78] => 63
[79] => 67
[80] => 75
)
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
[12] => 66
[13] => 64
[14] => 65
[15] => 61
[16] => 73
[17] => 62
[18] => 75
[19] => 74
[20] => 76
[21] => 63
[22] => 67
[23] => 75
[24] => 64
[25] => 65
[26] => 61
[27] => 66
[28] => 73
[29] => 62
[30] => 74
[31] => 76
[32] => 63
[33] => 67
[34] => 3
[35] => 64
[36] => 65
[37] => 61
[38] => 66
[39] => 73
[40] => 62
[41] => 75
[42] => 74
[43] => 76
[44] => 63
[45] => 67
[46] => 76
[47] => 64
[48] => 65
[49] => 61
[50] => 66
[51] => 73
[52] => 62
[53] => 75
[54] => 74
[55] => 63
[56] => 67
[57] => 3
[58] => 64
[59] => 65
[60] => 61
[61] => 66
[62] => 73
[63] => 62
[64] => 74
[65] => 63
[66] => 67
[67] => 75
[68] => 76
[69] => 35
[70] => 64
[71] => 65
[72] => 61
[73] => 66
[74] => 73
[75] => 62
[76] => 74
[77] => 76
[78] => 63
[79] => 67
[80] => 75
[81] => 64
[82] => 65
[83] => 61
[84] => 66
[85] => 73
[86] => 62
[87] => 75
[88] => 74
[89] => 76
[90] => 63
[91] => 67
)
Array
(
[0] => 69
[1] => 64
[2] => 65
[3] => 61
[4] => 66
[5] => 73
[6] => 62
[7] => 75
[8] => 74
[9] => 76
[10] => 63
[11] => 67
[12] => 66
[13] => 64
[14] => 65
[15] => 61
[16] => 73
[17] => 62
[18] => 75
[19] => 74
[20] => 76
[21] => 63
[22] => 67
[23] => 75
[24] => 64
[25] => 65
[26] => 61
[27] => 66
[28] => 73
[29] => 62
[30] => 74
[31] => 76
[32] => 63
[33] => 67
[34] => 3
[35] => 64
[36] => 65
[37] => 61
[38] => 66
[39] => 73
[40] => 62
[41] => 75
[42] => 74
[43] => 76
[44] => 63
[45] => 67
[46] => 76
[47] => 64
[48] => 65
[49] => 61
[50] => 66
[51] => 73
[52] => 62
[53] => 75
[54] => 74
[55] => 63
[56] => 67
[57] => 3
[58] => 64
[59] => 65
[60] => 61
[61] => 66
[62] => 73
[63] => 62
[64] => 74
[65] => 63
[66] => 67
[67] => 75
[68] => 76
[69] => 35
[70] => 64
[71] => 65
[72] => 61
[73] => 66
[74] => 73
[75] => 62
[76] => 74
[77] => 76
[78] => 63
[79] => 67
[80] => 75
[81] => 64
[82] => 65
[83] => 61
[84] => 66
[85] => 73
[86] => 62
[87] => 75
[88] => 74
[89] => 76
[90] => 63
[91] => 67
[92] => 64
[93] => 69
[94] => 65
[95] => 61
[96] => 66
[97] => 73
[98] => 62
[99] => 74
[100] => 63
[101] => 67
[102] => 76
[103] => 75
)
É... tá dentro de um loop... :blush:
Está dentro de outra consulta while{, que por sua vez está dentro de um foreach... Deve ser por isso, né? :cry:
Vou mesclar as duas consultas e deixar apenas um while... porém este estará dentro do foreach... Algum problema nisso?
Valeu.
Eu costumo adotar a política fazer o possível e o impossível para jamais ter mais do que dois loops aninhados.
Ouve-se muito que se passou de dois loops, algo está errado.
Sendo assim tente quebrar os loops aninhados em múltiplos loops simples. Ex:
foreach( $foo as $bar ) {
foreach( $bar aqs $baaz ) {
foreach( $baaz as $b ) {
// Do something
}
}
}
Para:
$bar = array();
foreach( $foo as $f ) {
$bar[] = $f;
}
$baaz = array();
foreach( $bar as $b ) {
$baaz[] = $b;
}
foreach( $baaz as $b ) {
// Do something
}
Parece ridículo, mas pode funcionar.
Se não conseguir, eu proponho outra solução.
Não foi... continuar repetindo o array, de forma crescente.
Descobri que o loop não é culpado. Criei vários txt com inteiros diferentes em cada linha e quando mando ler é mostrado apenas um array. Já com a query mostra mais de uma vez o mesmo array...
$permitidos="";
$filename = "$nome.dat";
if (file_exists($filename)) {
$fp = fopen($filename, "a+b");
$ponteiro = fopen ($filename, "r");
while (!feof ($ponteiro)) {
$linha = fgets($ponteiro);
$permitidos[] = trim($linha);
}
fclose ($ponteiro);
}
print '<pre>'; print_r( $permitidos);
A variável $nome muda de acordo com o txt. :wacko:
Certo, eu já tive esse problema. Experimente uma das duas e veja qual funciona para seu caso:
if( in_array( (int) $id, $permitidosarqs ) ) {}
Ou:
if( in_array( (string) $permitidosarqs ) ) {}
Lembrando que esse IF não deveria estar no mesmo loop que popula esse array e sim dentro do loop mais externo que o define.
A dica anterior é mais por questões de performance e manutenibilidade do que solução para o problema pois ela executa mais rápido que loops aninhados e te permite consertar de forma mais rápida, já que não precisará ficar depurando e depurando até descobrir o problema.
Quebrar um lógica complexa em pequenas partes é sempre uma boa pedida. e loops aninhados são uma das piores coisas pois a iterações são potencializadas.
Também não deu... Algo que notei no meu spoiler: o resultado dos arrays está sendo concatenado...
Os primeiros dois arrays deveriam retornar 11 interger. Mas o segundo é concatenado com o primeiro... o terceiro com o primeiro e o segundo e assim por diante... :upset:
Esse é o comportamento esperado da sintaxe de colchetes, ir sempre adicionando no final.
Como você não informou nada para criar uma nova dimensão, dá essa impressão de mescla.
Pela sua query, você poderia fazer assim:
$permitidosarqs[ $idarq ][] = $linhaUSRJaPermitido['id_usuario_perm'];
E, em $idarq sendo único haverão tantos índices quanto s ID's você tive dentro de cada qual um array menor de valores.
E a condição muda um pouquinho também, afinal com essa alteração você precisaria incluir a dimensão adicional:
if( in_array( $permitidosarqs[ $idarq ] ) ) {}
Veja a que ponto essas modificações te ajudam.
Adicione antes do IF:
print '<pre>'; print_r( $permitidosarqs );
e poste o resultado.