Ir para conteúdo
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por 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.
       
       
       
       
       
       
    • Por 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
       
    • Por 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.
    • Por Matheus Isac
      <body> <form action="" method="post"> <textarea name="url">site</textarea> <input type=submit value="EXPLOITAR"> </form> </body> <?php $link = $_POST['url']; $a = explode(";", $link); function geralink($a){ if( $a !== null){ return("$a".'index.php'); } } $urls =array_map("geralink" , $a); foreach( $urls as $key => $url){ $mh = curl_multi_init(); $ch[$key] = curl_init($url); // set URL and other appropriate options curl_setopt($ch[$key], CURLOPT_URL, $url ); curl_setopt($ch[$key], CURLOPT_HEADER, 0); curl_setopt($ch[$key], CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'); curl_setopt($ch[$key], CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch[$key], CURLOPT_RETURNTRANSFER, TRUE); curl_multi_add_handle($mh , $ch[$key]); // grab URL and pass it to the browser $html = curl_exec($ch[$key]); } do { curl_multi_exec($mh, $running); curl_multi_select($mh); } while ($running > 0); // loop for the responses codes foreach(array_keys($ch) as $key){ $httpcode = curl_getinfo($ch[$key], CURLINFO_HTTP_CODE); $effurl = curl_getinfo($ch[$key], CURLINFO_EFFECTIVE_URL); if(curl_errno($ch[$key]) === TRUE){ echo 'Curl error: ' . curl_error($ch[$key]); }else{ echo "CODE: $httpcode URL: $effurl <br>"; echo "\n"; } curl_multi_remove_handle($mh, $ch[$key]); } curl_multi_close( $mh) ?>  
    • Por Find HP
      Primeiramente,

      bom dia, boa tarde ou boa noite... Eu estava programando em PHP no dia 14/02, quando não conseguia usar o foreach pra essa função:

      Ela iria exibir o apresentar de cada objeto dentro do Array. Podem me ajudar?

      Uso o PHP 7




×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.