/ / PHP: array no array. Pesquisa de matriz de PHP

PHP: array em array. Pesquisa de matriz de PHP

A programação é sintaxe e semântica.O primeiro é determinado pelas regras da linguagem, o segundo - pela experiência do desenvolvedor. Com relação aos arrays, o desenvolvedor pode sujeitar a sintaxe à semântica. Ainda não é um objeto, mas não é mais um array no sentido tradicional. O PHP torna possível criar arrays de variáveis ​​de vários tipos, incluindo eles próprios. Um elemento de uma matriz pode ser uma função, ou seja, a capacidade de carregar uma matriz com um algoritmo real, significado real.

A sintaxe é estável, mas muda de versão paraversões e nem sempre podem ser compatíveis com A portabilidade do programa é uma conquista bem esquecida do século passado. A semântica se desenvolve e sempre pode ser aplicada não apenas em qualquer versão de qualquer idioma; tornou-se uma tradição usar construções sintáticas para expressar o que as regras da linguagem nem mesmo estavam previstas. Usando matrizes como exemplo, isso pode ser entendido de forma mais simples.

Construindo matrizes

Os arrays PHP têm sintaxe e funcionalidade convenientes. Esse tipo de dados pode ser descrito com antecedência, mas geralmente é conveniente criar matrizes dinamicamente, conforme necessário.

public $ aNone = array (); // o array é descrito e não contém nada

public $ aFact = array ("abacate", "pêssego", "cereja"); // este array tem três elementos

Criação de um array no processo de verificação de alguma condição:

$ cSrcLine = "linha de dados analisados";

para ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = inputUserLine (); // insira algo

if (checkFunc ($ cSrcLine, $ cUserLine) {

$ aResult [] = "Sim"; // adicionar ao array PHP

} outro {

$ aResult [] = "Não";

}

}

Como resultado da execução deste exemplo,uma matriz de 13 elementos, cujos valores serão apenas as cadeias de caracteres "Sim" ou "Não". Os elementos receberão índices de 0 a 12. O mesmo efeito pode ser obtido escrevendo-se previamente o array PHP "futuro" em uma string:

$ cFutureArray = "";

para ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = inputUserLine (); // insira algo

if ($ i> 0) {$ cFutureArray. = "|"; }

if (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = "Sim";

} else {$ cFutureArray. = "Não"; }

}

$ aResult = explode ("|", $ cFutureArray);

array php para string

Matrizes multidimensionais

Muitos sistemas de gerenciamento de sites (SMS)usar matrizes "em grande estilo". Por um lado, é uma boa prática, por outro, torna-se difícil de aplicar. Mesmo que o autor entenda a doutrina "PHP-array-in-array", ela não deve ser abusada: não apenas o desenvolvedor terá que se acostumar com a notação complexa. Muitas vezes, depois de um tempo, o próprio criador se lembrará por muito tempo do que escreveu no início:

array de retorno (

"view_manager" => array (41, "template_path_stack" => array (__DIR__. "/../view",),

"router" => array ("routes" => array ("sayhello" => array (

"type" => "ZendMvcRouterHttpLiteral",

"options" => array ("route" => "/ sayhello", "defaults" => array (

"controlador" => "HelloworldControllerIndex", "ação" => "índice",))))),

"controladores" => array ("invokables" => array (

"HelloworldControllerIndex" => "HelloworldControllerIndexController"))

);

Este é o PHP Array in Array Sample Practice da ZF2. Não é muito inspirador no início, mas funciona e provavelmente torna este framework um sucesso (exemplo do módulo ZendSkeletonApplication / module / Helloworld / config / module.config.php).

remove o elemento do array php

Array é uma construção de dados importante durantedesign e desenvolvimento. Sua versão multidimensional já foi popular, mas com o tempo, continua sendo necessária uma matriz de no máximo duas ou três dimensões. Isso é mais simples e compreensível, mas do ponto de vista do profissionalismo, quando algo começa a se multiplicar, significa que algo está errado na declaração do problema ou no código.

Simples, acessível e compreensível

Ao criar em php um array em um array é melhorser limitado a dois ou três níveis. Apesar da estabilidade e confiabilidade, o PHP comete erros ao processar a sintaxe. Você pode tolerar isso, tendo um bom editor de código, acostumado a contar com precisão colchetes e vírgulas. No entanto, o PHP não controla os tipos de dados (este é o carma da programação moderna) e permite que o desenvolvedor pratique erros semânticos.

Uma regra para controlar os tipos de variáveis, ouAs próprias ideias de transformar a semântica em sintaxe são frequentemente um luxo inaceitável. Isso é uma perda de velocidade do script, legibilidade do código, ... portanto, a facilidade de codificação é sempre essencial.

PHP tem uma desvantagem significativa:quando há incerteza, o script simplesmente trava. Nem todos os depuradores lidam com contingências e muito depende da experiência e intuição do desenvolvedor. Quanto mais simples o algoritmo, mais acessível a informação é estruturada, maiores são as chances de encontrar um erro ou não admiti-lo.

É característico que, quando as primeiras matrizes apareceram,foram propostas variantes de dados na forma de estruturas - uma tentativa desajeitada de criar algo a partir de diferentes tipos de dados. Os primeiros sobreviveram e adquiriram uma nova sintaxe efetiva, enquanto os últimos são história.

Matrizes simples e associativas

Escrever uma matriz bidimensional é outro parcolchetes "[" e "]", por exemplo: $ aSrcData [1] [2] significa se referindo ao elemento [2] do array [1] incluído no array $ aSrcData. Não há requisitos no PHP para declarar dados antecipadamente. Qualquer informação declarada sempre pode ser verificada quanto à existência.

É muito eficaz criar algo apenas sequando for necessário, na forma em que foi requerido, e para destruir quando a necessidade tiver desaparecido. Usando nomes sensíveis como chaves (índices), você pode obter construções legíveis que são significativas no contexto do local atual no algoritmo:

$ aAnketa ["nome"] = "Ivanov";
$ aAnketa ["idade"] = 42;
$ aAnketa ["work"] = "Diretor";
$ aAnketa ["ativo"] = verdadeiro;
$ aTable [] = $ aAnketa;

$ aAnketa ["nome"] = "Petrov";
$ aAnketa ["idade"] = 34;
$ aAnketa ["work"] = "Gerente";
$ aAnketa ["ativo"] = verdadeiro;
$ aTable [] = $ aAnketa;

$ aAnketa ["name"] = "Afanasiev";
$ aAnketa ["idade"] = 28;
$ aAnketa ["work"] = "Trabalhador";
$ aAnketa ["ativo"] = falso;
$ aTable [] = $ aAnketa;

$ sOne. = implode (";", $ aTable [1]). "<br/>"; // segundo array PHP para string
$ sOne. = $ aTable [1] ["trabalho"]; // acesso a um elemento da segunda matriz

O resultado deste exemplo (o primeiro array é normal, as chaves nele começam em 0, o segundo array é associativo, ele tem quatro chaves: "nome", "idade", "trabalho", "ativo"):

$ sOne = "Petrov; 34; Gerente; 1 <br/> Gerente";

Neste exemplo simples, você pode ver comoo perfil criado pode ser aplicado a todos os funcionários. Você pode criar uma matriz de funcionários com índices por número pessoal e, se precisar de um funcionário específico, selecioná-lo por número pessoal.

Se a organização possui departamentos, ou existemtrabalhadores sazonais ou precisam separar aposentados trabalhando ... o array PHP na construção de array é muito útil, mas você nunca deve se deixar levar pela dimensionalidade. Duas ou três dimensões são o limite para uma solução eficaz.

pesquisa de matriz php

Chaves para trabalhar com matrizes

Se antes importava como tudo funcionava, entãoNos últimos anos, as tradições da era binária, quando um programador queria saber exatamente como os elementos de um array eram armazenados e queria ter acesso direto a eles, foram completamente esquecidas. Existem muitas codificações de caracteres que ocupam mais de um byte na memória. A palavra "bit" agora pode ser encontrada apenas em operações de pesquisa de bits, mas pesquisar em um array PHP é um tópico separado. O acesso ao elemento pode ser simples e associativo. No primeiro caso, os elementos do array (tendo qualquer um dos tipos disponíveis em PHP) são numerados 0, 1, 2, ... No segundo caso, o programador especifica seu próprio índice, freqüentemente chamado de "chave" para acesse o valor desejado.

$ aLine ["fruta"] = "laranja"; // aqui PHP array key = "fruta"

ou (para que tudo esteja correto, observando a página e a codificação do código):

$ aLine [iconv ("utf-8", "CP1251", "fruta")] = iconv ("utf-8", "CP1251", "laranja");

Ao adicionar um novo valor ao array $ aLine:

$ aLine [] = iconv ("utf-8", "CP1251", "pêssego");
$ aLine [iconv ("utf-8", "CP1251", "vegetal")] = iconv ("utf-8", "CP1251", "pepino");
$ aLine [] = iconv ("utf-8", "CP1251", "berinjela");

como resultado da execução do loop:

foreach ($ aLine as $ ck => $ cv) {
$ cOne. = $ ck. "=". $ cv. "<br/>";
}

receberá:

fruta = laranja
0 = pêssego
vegetal = pepino
1 = berinjela

Ao adicionar os elementos "pêssego" e "berinjela", a chave PHP do array é formada sequencialmente a partir de 0, e ao especificar seu valor, ela será igual a este valor.

Removendo elementos de uma matriz

php delete array

A maneira mais fácil é remover um elemento de um array PHP duranteprocessá-lo. Nesse caso, por exemplo, como resultado da execução do loop, o array original é varrido e um novo é formado, no qual elementos desnecessários simplesmente não são gravados.

Você pode fazer isso mais fácil. Se nos aplicarmos ao último exemplo:

não definido ($ aLine [0]); // remove o elemento do array PHP

então o resultado será:

fruta = laranja
vegetal = pepino
1 = berinjela

Opções para manipular elementos da matrizmuitos podem ser construídos. Por exemplo, usando as funções: implode () e explode (), você pode escrever um array PHP em uma string com um separador e analisá-lo de volta em outro array usando um separador diferente.

Para simplesmente deletar um array inteiro em PHP, basta escrever: unset ($ aLine);

É o suficiente.

Pesquisa em uma matriz

PHP contém funções de pesquisa especiaisarray_keys (), array_values ​​(), array_key_exists () e in_array (), entretanto, antes de decidir usá-los, você deve considerar fazer uma pesquisa de array PHP você mesmo.

chave de array php

Qualquer projeto tem uma área temática específica,arrays construídos, especialmente quando parte da semântica foi transferida para a sintaxe e representada por um conjunto de chaves significativas muito específicas. Isso permite que você execute suas próprias funções de pesquisa, que também podem ser rotuladas de forma significativa.

No PHP, você pode chamar funções cujos nomes são determinados durante a execução do programa. Um exemplo muito prático da biblioteca PHPWord que permite ler e criar documentos MS Word:

$ elements = array ("Text", "Inline", "TextRun", "Link", "PreserveText", "TextBreak",
"ListItem", "ListItemRun", "Table", "Image", "Object", "Footnote",
"Endnote", "CheckBox", "TextBox", "Field", "Line");

$ funções = array ();

para ($ i = 0; $ i <contagem ($ elementos); $ i ++) {
$ functions [$ i] = "adicionar". $ elementos [$ i];
}

Como resultado, o array $ functions receberá os valores do array $ elements, ou seja, os nomes das funções reais que realizam trabalhos com elementos reais do documento.

Ao chamar $ functions [4] em $ elements [4], você pode obter uma pesquisa perfeita e resultados rápidos.

Classificando itens

A tarefa de classificar os dados é essencial, eO PHP oferece várias funções para isso: sort (), rsort (), asort (), ksort (), ... Elementos ascendentes e descendentes, as duas segundas funções preservam a relação entre chaves e valores. Às vezes, faz sentido embaralhar os valores do array aleatoriamente - shuffle ().

php o valor no array

Ao usar funções PHP para classificar, nãoesqueça que os elementos podem ter não apenas tipos diferentes, mas também conteúdo não inteiramente natural. Em primeiro lugar, você precisa ter muito cuidado ao classificar strings contendo letras russas, classificar datas, bem como números que são escritos em formatos diferentes.

array php em array

A melhor maneira de escrever a solução perfeita sozinho, pelo menos durante a fase de teste do script, é classificando manualmente. Ela ajudará a antecipar situações imprevistas.

Matrizes embutidas

Graças às funções implode () e explode (), o arraypode ser facilmente transformado em um barbante e recebido de volta. Isso permite armazenar dados em um formato compacto e expandi-los para um estado conveniente, conforme necessário.

Um array transformado em string abre novas possibilidades. Por exemplo, a tarefa de localizar palavras-chave no texto requer que o encontrado não seja adicionado novamente.

$ cSrcLine = "Texto Texto ListItemRun TextBox ListItem TextBox Check Box CheckBox TextBox Rodapé";

$ aSrc = explode ("", $ cSrcLine);
$ cDstLine = "";

para ($ i = 0; $ i <contagem ($ aSrc); $ i ++) {
$ cFind = "[". $ aSrc [$ i]. "]";
if (! is_integer (strpos ($ cDstLine, $ cFind))) {
$ cDstLine. = $ cFind;
}
}
$ aDst = explode ("] [", $ cDstLine);

$ cOne = implode (";", $ aDst);

Como resultado, a variável $ cOne receberá apenas os valores da string original que ocorrerem uma vez: "Text; ListItemRun; TextBox; ListItem; Check; Box; CheckBox; Nota de rodapé".

Língua russa em chaves e valores

Não é recomendado usar nada relacionadocom codificações nacionais, em construções sintáticas. O idioma russo, como todos os outros idiomas cujos caracteres vão além de a-z, não criará problemas por estar na área de dados, mas não na sintaxe do código. Às vezes, até mesmo uma simples tarefa de PHP "para imprimir um array em uma impressora ou em uma tela" levará a "krakozyabra" e, com mais frequência, apenas interromperá o script.

PHP é uma linguagem leal e tolerante comcódigos nacionais, mas há muitas situações em que a quantidade de trabalho concluída tem que ser feita novamente apenas porque no lugar certo e na hora certa um valor chave aparece, que não será possível reconhecer.

Sintaxe PHP e ambiente de linguagem

Deve ser lembrado que a sintaxe do PHP é uma coisa, masas construções desta sintaxe "lidam" com outras aplicações, com o sistema operacional, com opções de hardware. As opções são muitas, nunca é possível prever tudo.

A regra “no código existe apenas o código, mas na entrada,lá dentro, e na saída estão todas as informações ”, ajudará a evitar surpresas imprevistas. O valor PHP no array pode ser "russo", mas a chave para ele deve ser sintaticamente correta não apenas do ponto de vista da linguagem fornecida, mas também do ponto de vista de seu ambiente.

Gostei:
0
Posts populares
Desenvolvimento Espiritual
Alimento
sim