Jump to content
Omar~

Curiosidades

Recommended Posts

Já de início, não é um problema, são apenas curiosidades que me foram perguntadas e não soube responder, logo também não são coisas lógicas é só por questão de entendimento mesmo.

Enfim, o negócio é array.

 

  • Questão 1

Digamos que eu tenhamos o seguinte array:

$arr = [
    0 => 'idx-A',
    1 => 'idx-B'
];

Logo então se quero acessar o primeiro índice basta usar $arr[0];

Tudo certo não é? Mas e se for esse o caso?

$arr = (object) [
    0 => 'idx-A',
    1 => 'idx-B'
];

$arr[0]; //Erro. Porque uma stdClass não pode-se acessar o índice

$arr->0; // Erro. Porque o acesso deveria ser por T_STRING e não T_LNUMBER
$arr->[0]; // Erro no mesmo caso acima de str e int, além de erro de escrita.
 

Agora complicando mais e se esse fosse o array:

$arr = (object) [
    'idx-A',
    'idx-B'
];

 

  • Questão 2

Um arquivo (vou chamar-lo de arr.php) o mesmo possui um array e o retorna dessa forma:

<?php
return [
    'index1' => 'valor A',
    'index2' => 'valor B',
    'index3' => 'valor C'
];

Então em outro arquivo (vou chamar-lo de incluir.php) pegamos o retorno através de um require nomeamos o array

<?php
$arr = require('arr.php')

Então vamos supor que estejamos no index.php

<?php
require('incluir.php');
echo $arr['index1']; // Acessamos então o primeiro índice "valor A"

Tudo certo, não é, então vamos complicar....

Criamos uma função para dar include o que poderia ser uma função que captura valores e faz a inclusão de arquivos conforme for as condições

<?php
function iMasters($parametro) {
    $valor = (isset($parametro) ? $parametro : 'nenhum_valor');
    switch ($valor) {
        case 'alguma_coisa':
            // sei lá
            break;
        default:
            include ('bugado.php');
            break;
    }
}

Então no index eu fazemos a requisição do arquivo e chamamos a função:

<?php
require('incluir.php');
require('iMasters.php'); // Seria o arquivo que contém a função

iMasters(); // No caso a função nessa condições faria o include do arquivo bugado.php

Enfim chegamos a questão. O suposto arquivo bugado.php não reconhece a array  criada anteriormente através de include.

E se tentarmos chamar novamente o incluir.php temos erro de inclusão por causa disso require('arr.php'); transcrito no próprio incluir.php. Então trocamos a questão para require_once('arr.php');

Removemos o erro mas não temos um array de retorno e sim um valor booleano. O que pode ser contatado usando var_dump($arr);

Então porque será que um arquivo que é incluído por uma função não reconhece os valores de outro include?

 

E é isso... Não são problemas, como disse logo no começo por serem coisas sem pé nem cabeça de se fazer, mas são questões que vieram até mim, o que atiçou minha curiosidade também.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By MCL_2007
      Boa dia Amigos...
      Tenho esses arrays:
      Array (
      [0] => 2535
      [1] => 2433
      )
      Array (
      [0] =>
      [1] => marcelo@gmail.com;m@terra.com.br
      [2] =>
      [3] => neusa@terra.com.br
      )
       
      Preciso do seguinte resultado de saida:
      2535 - marcelo@gmail.com;m@terra.com.br
      2433 -  neusa@terra.com.br
       
      Como faço , alguem pode me ajudar?
      Gratidao.
    • By andrelmacedo
      Pessoal estou criando um programa onde o usuário entrará com seis números apostados na mega sena e depois os seis números do resultado oficial, e tenho que mostrar quantos acertos ele obteve.
       
      Criei dois arrays e estou conseguindo armazenar os valores de forma correta, porem não estou sabendo fazer a parte da comparação dos arrays e mostrar quantos acertos ele teve.
       
       
      vou colocar o código aqui, se alguém puder me ajudar agradeço.
       
       #include <stdio.h>
       #include <stdlib.h>
       #include <conio.h>
       
       int main(void)
       {
          int apostados[6];
          int oficial[6];
          int x, i, y,k, total;
          
          printf ("Digite os 6 numeros apostados \n");
       
          for (i = 0; i < 6; i++)   //Este laco faz o scan de cada elemento do vetor//
          {
             scanf("%d", &apostados);
          }
          i = 1;
          x = apostados[0];
          
          printf ("Digite os 6 numeros do resultado oficial \n");
          
          for (i =0; i< 6; i++)
          {
              scanf("%d", &oficial);
          }
          i = 1;
          y = oficial[0];
          total=0;
          
          while (i<6)
          {
              for (i=0, i<6; i++;)
              {
                  if (apostados == oficial[k])
                  {
                      total++;
                  }
                  k++;
              }
              i++;
          }
          
          printf ("%d",total);
      }
       
       
      A parte da comparação provavelmente esta toda errada.
       
      Obrigado desde já pela ajuda.
          
          getch();
    • By Alphb
      Por favor alguém me ajuda eu passei muito tempo sem mexer em php esqueci quase tudo,
      Quero fazer o seguinte.
      Quero fazer isso pegar um php e fazer ele lê um arquivo texto
      ------------------------------------------------------------------------
      Texto:
      Link/ nome/ legenda
       
      Www.link.com/ Daniloteste / Feliz ano novo
      Www.linket.com/ Eduardo / Booyah
      ...
       
      -------------------------------------------------------------------------
      Quero botar cada linha dentro de uma arrays exemplo chamar o link "linket"
      $link[1] *www.linket.com*
       
      Ou
       
      Chamar o primeiro nome
      $name[0] *Daniloteste*
       
      ---------------------------------------------------------------------------
       
      Tipo isso, mas dentro do arquivo.php vai ta assim "só um exemplo".
       
      *área onde o arquivo.txt vai ser lido"
       
       
      <label><? $link[1] ?></label>
       
      Entendeu toda vez que a pagina carregar ele vai ler o arquivo.texto e carregar no HTML direto.
       
      Espero q alguém responda.
       
       
       
       
       
       
    • By SeveroSoft
      Fala mentes brilhantes, como vocês estão? bem?
       
      Bom, hoje precisava de uma ajudinha de vocês, espero que consigam me dar uma força .
       
       
      Sistema:
      Estou desenvolvendo um sistema de atendimento em mesas de um restaurante.
      Para isso adicionei 1 select options que chama a tabela CATEGORIAS (SEGUE A IMAGEM)


      Ao selecionar a categoria (Por exemplo "Pizzas") Carrega as opções no outro Select Options abaixo que se chama produtos.

       
      Até ai tudo bem... Oque preciso agora é fazer com que ao SELECIONAR A OPÇÃO PIZZA mostre apenas os CHECKBOX que estão relacionados ao produto (Tem na tabela um campo chamado id_modificadores, que if o id_prod (Na tabela modificadores) == id_modificadores (Na tabela produtos) {
      }
      CÓDIGO QUE INFORMA OS MODIFICADORES.
      <?php while($reg3 = $query3->fetch_array()) { ?> <?php $nome_mod = $reg3["nome_mod"]; $nome_opt_mod = $reg3["nome_opcao_mod"]; $preco_mod = $reg3["preco_mod"]; $arrays = explode(',', $nome_opt_mod); $arrays_preco = explode(',', $preco_mod); echo "<br> <div class='col-sm-6'> <div class='card'> <h5 class='card-header'>$nome_mod</h5> <div class='card-body' name='id_modificadores' id='id_modificadores'> "; foreach($arrays as $valores) { echo "<div class='form-check'> <span type='hidden' class='switch switch-sm'><input type='checkbox' name='modificador[]' class='form-check-input' id='$valores' value='$valores'> <label for='$valores'><h5 class='card-title'>$valores</h5></label><br></div>"; } echo " </div> </div><br> </div>"; } ?> Aparentemente não entendo nada de AJAX, e o sistema que usei nos select options foi do CELKE, mas não funciona para checkbox. Lembrando que estes checkbox passam por um EXPLODE para se separarem pois eles vão para o banco de dados por ','.
       
      Desde-já agradeço a todos e tenham uma ótima semana. 
      Aguardo ansiosamente por esse HELP. 
       
      Atenciosamente Lucas Severo
       
    • By Pitag346
      Oi pessoal, beleza?
       
      To com um probleminha aqui, eu não faço ideia como posso estar armazenando vários valores e depois fazendo com o php separe eles e verifique.
      Como assim?
      Seguinte: tenho um sistema de upload de arquivos que quero separar por turmas e periodos.
      Exemplo:
      Meu arquivo, vou enviar para TURMA 1, TURMA 2 E TURMA 3
      estou utilizando checkbox para selecionar as turmas com o name em array (Assim: <input type="checkbox" name="turma[]" value="1">)...
      estou utilizando um forech para salvar no banco de dados com virgulas ficando no registro dessa forma: 1, 2, 3,
      Agora eu pego a turma do aluno que está armazenada em SESSION e quero comparar com esses números registrados acima ...
      Exemplo:
      Se o aluno em questão estiver na turma 1, 2 ou 3, ele vai ver o arquivo ... caso esteja na turma 4, esse arquivo não é exibido pra ele...
      não consigo fazer, pois, não estou sabendo como separar os valores... e fazer a comparação com os valores...
       
      Se alguém puder me ajudar com exemplos, serei muito grato.
      Obrigado desde já!
      Se estiver ficado muito confuso, posso estar adicionar imagens para melhor visualização!
      Att.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.