Curiosidades
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.
Discussão (1)
Carregando comentários...