Exemplo 4.24 -Classificando com sort() ,Livro Aprendendo PHP de David Skalar Página 98

21/05/2018

0

PHP

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Array</title>
</head>
<body>


<?php

//Exemplo 4.24 da Página 98 do Livro Aprendendo PHP de David Sklar


// Classificando com sort()

$dinner = array('Sweet Corn and Asparagus',
'Lemon Chicken',
'Braised Bamboo Fungus');
$mel= array('breakfast' => 'Walnut Bun',
'lunch' =>'Cashew Nuts and White Mushroons',
'snack' => 'Dried Mulberries',
'dinner' => 'Eggplant with Chili Sauce');

print "Before Sorting:\\n";

foreach ($dinner as $key => $value) {


print " \\$dinner: $key $valeu\\n";

}

foreach ($meal as $key => $value){
print "\\ $meal: $key $value\\n";
}

sort($dinner);
sort($meal);

print "After Sorting:\\n";
foreach ($dinner as $key => $value) {
print " \\$dinner: $key $value\\n";
}
foreach($meal as $key => $value) {
print " \\$meal: $key $value\\n";
}

?>

</body>

</html>

_____________________________Esse código acima está apresentando os seguintes erros (abaixo) _______________________________________________________________
Before Sorting:
Notice: Undefined variable: valeu in C:\\xampp\\htdocs\\php_ead\\cursophp\\apphpdspag98.ex4.24.php on line 30
$dinner: 0
Notice: Undefined variable: valeu in C:\\xampp\\htdocs\\php_ead\\cursophp\\apphpdspag98.ex4.24.php on line 30
$dinner: 1
Notice: Undefined variable: valeu in C:\\xampp\\htdocs\\php_ead\\cursophp\\apphpdspag98.ex4.24.php on line 30
$dinner: 2
Notice: Undefined variable: meal in C:\\xampp\\htdocs\\php_ead\\cursophp\\apphpdspag98.ex4.24.php on line 34

Warning: Invalid argument supplied for foreach() in C:\\xampp\\htdocs\\php_ead\\cursophp\\apphpdspag98.ex4.24.php on line 34

Warning: sort() expects parameter 1 to be array, null given in C:\\xampp\\htdocs\\php_ead\\cursophp\\apphpdspag98.ex4.24.php on line 39
After Sorting: $dinner: 0 Braised Bamboo Fungus $dinner: 1 Lemon Chicken $dinner: 2 Sweet Corn and Asparagus
Warning: Invalid argument supplied for foreach() in C:\\xampp\\htdocs\\php_ead\\cursophp\\apphpdspag98.ex4.24.php on line 45

Obs: Já conferi 5 vezes esse código e está exatamente como no livro .
Antonio Gomes

Antonio Gomes

Responder

Post mais votado

23/05/2018

Rs rs

Entendi, bom vou tentar lhe passar uma explicação embora sendo por texto, então de como o Exemplo 4.24 do Livro Aprendendo PHP funciona,
mas isso não seria possivel sem antes um conceito basico do que é Array e de como ele funciona.

Primeiramente como você ja esta vendo sobre arrays você ja sabe o que é uma variável correto?
Uma variável é utilizada quando a gente precisa armazenar um valor em memória para usar posteriormente este valor seja em cálculos, ou simplesmente para mostrar uma determinada informação na tela.
O problema que resultou na criação de arrays foi justamente que em uma variável eu consigo armazenar somente um valor de cada vez, ou seja no exemplo abaixo

$a = 'João';
echo $a; //Neste caso o PHP vai imprimir na tela João


Porem se eu gostaria de imprimir um nome e sobrenome?
eu teria que escre o código utilizando variável assim

$a = 'João';
$b = 'Silva';
echo $a.' '.$b; // o retorno seria João Silva (lembrando que quando utilizo o ponto (.) estou informando que quero concatenar (unir textos).)


o Arry permite que em uma mesmo variável eu guarde quantos valores forem necessário. Utilizando o mesmo exemplo para que eu guardasse tanto meu nome como meu sobrenome em um array eu poderia declarar da seguinte forma.

$nomeCompleto = array('João', 'Silva');  //Aqui seria a declaração do meu array que recebe João como primeiro indice e 'Silva' como segundo idice, lembrando que ao trabalhar com arrays o indice de um array sempre começa com 0


echo $nomeCompleto[0].' '.$nomeCompleto[1]; //por isso que quando se vai mostrar o resultado na tela para pegar a primeira posição do array utilizo o indice [0] isso diz para o PHP pegar a primeira posição do array $nomeCompleto.


Para entender melhor como o array funciona pense que ele armazena as informações como uma tabela.
mais ou menos assim

Indices | Valores
0 João
1 Silva

seguindo nesta linha se eu quiser recuperar o valor que se encontra no primeiro indice basta usar o nome do array $nomeCompleto mais o indice que deseja recuperar [0]
Ficando

$nomeCompleto[0]  //esta chamada seria igual a 'João'
$nomeCompleto[1]  // esta chamada seria igual a 'Silva'


Comentando o código do livro agora. Lembrando que as partes em azul são comentários, e não influenciam no código, usei apenas como artimanha para comentar logo antes de cada chamada.

<?php

//Exemplo 4.24 da Página 98 do Livro Aprendendo PHP de David Sklar
/*
    No codigo abaixo estamos vendo que esta sendo criado um array com o nome $dinner, esta sendo passado 3 valores para iniciar este array, até aqui tudo bem certo
    Ja vimos que o que é passado entre os parenteses são as informações para cada indice do nosso array.
*/
$dinner = array('Sweet Corn and Asparagus','Lemon Chicken','Braised Bamboo Fungus');

/*
    Neste segundo array é possivel reparar uma diferença na criação, mas na verdade a unica diferença é que o PHP permite que você possa colocar nomes nos indices.
    Ou seja, ao inves de você chamar $nomedoseuarray[0] você pode chamar $nomedoseuarray['chave']...
    vamos ver como isso ficaria com nosso exemplo do nome.
    $nomeCompleto = array('nome' => 'João', 'sobrenome' => 'Silva') então nesta declaração estou dizendo para o PHP que quando eu chamar $nomeCompleto['nome'] quero receber a informação que esta armazenada no indice com a chave nome
    então se eu fosse mostrar na tela o nome e o sobrenome eu chamaria da seguinte forma
    $nomeCompleto['nome']
    $nomeCompleto['sobrenome']
    No exeomplo do livro o Autor esta informando chaves para posteriormente recuperar os valores que estao no array 
*/

$meal= array('breakfast' => 'Walnut Bun','lunch' =>'Cashew Nuts and White Mushroons','snack' => 'Dried Mulberries','dinner' => 'Eggplant with Chili Sauce');

print "Before Sorting:\\n";

/*
    Aqui nas linhas que vem a seguir o autor esta chamando a funçao nativa do PHP foreach passando o seu array $dinner, isso significa que o foreach vai passar por todos os elementos(indices) do seu array
    e para cara elemento que ele percorrer ele vai trazer a chave e vai armazenar na variavel ($key) e também vai trazer o valor armazenado na variavel ($value) então para cada registro do seu array eu terei essas duas informações
    neste caso ele esta usando para mostrar a informação na tela, para cada item que ele passar no seu arrai ele vai escrever na tela em que indice ele esta e o valor que esta armazenado naquele indice
    ficando assim:
    ($key)0 : ($value)Sweet Corn and Asparagus 
    ($key)1 : ($value)Lemon Chicken 
    ($key)2 : ($value)Braised Bamboo Fungus 
    apenas cologuei as variaveis $key e $value para que voce entenda de onde ele buscou este valor.
*/

foreach ($dinner as $key => $value) {

	print "{$key} : {$value} <br/>";

}

/*
    Aqui vai funcionar da mesma formma, porem como ao criar o array foi informado indices no fomato string, 'breakfast' => 
    ao inves do PHP ao escrever a chave mostrar o numero do indice ele vai mostar o nome do indice estipulado na hora da criação do array ficando assim
    ($key)breakfast: ($value)Walnut Bun 
    ($key)lunch: ($value)Cashew Nuts and White Mushroons 
    ($key)snack: ($value)Dried Mulberries 
    ($key)dinner: ($value)Eggplant with Chili Sauce 
*/

foreach ($meal as $key => $value){
	print "{$key}:{$value} <br/>";
}

/*
 O metodo sort ele pega um array e embaralha utilizando um termo para fácil compreensão os registros dentro dele.
 por isso que nos dois foreach em seguida mesmo utilizando os mesmos dados ele mostra as informações em uma seqüência diferente.
*/
sort($dinner);
sort($meal);

print "After Sorting:\\n";
foreach ($dinner as $key => $value) {
	print "{$key}:{$value} <br/>";
}
foreach($meal as $key => $value) {
	print "{$key}:{$value} <br/>";
}


Espero que tenha ficado um pouquinho mais claro.
muitas vezes lendo as coisas podem se tornar um pouco mais dificil de compreender.
mas quqlauqer duvida em algum ponto do metodo você pode questionar aqui que tentamos resolver pra vocês.

[]´s
Chiodini

Leandro Chiodini

Leandro Chiodini
Responder

Mais Posts

22/05/2018

Leandro Chiodini

Opa tudo bem
veja se consigo te ajudar
Estou usando comentarios nas linhas de erro para ver se fica melhor.



foreach ($dinner as $key => $value) {

	//O problema da linha 30 esta neste ponto, você nao pode passar um array sem chamar o seu index para saber qual dos registros você esta chamando.
	//e é exatamente isto que o foreach faz, ele passa por todos os registros de um array, então neste caso se você quer mostrar o valor de um determinado registro
	//basta usar somente o $key e o $value
	// e para pular a linha você pode usar o HTML mesmo
	print "{$key}: {$value} <br/>";

}


//Na linha 34 temos o mesmo problema, e alem deste temos tambem um probleema na sua variavel meal
//Que la na linha 20 aonde vc declara ela ela esta apenas como $mel e não meal
foreach ($mel as $key => $value){
print "{$key}: {$value} <br/>";
}


//Ja na linha 39
//temos o mesmo problema da variavel meal que vc declarou como $mel
//se substituir pela variavel que voce declarou vai funcionar.	
sort($mel);


Na linha 45 temos o mesmo problema com a variavel $meal e com os outros foreach.
Que tal você tentar verificar e ver se você consegue arrumar a linha 49.
Qualquer coisa estarei por aqui
Responder

23/05/2018

Antonio Gomes

Chiodini

A sua explicação é de quem "DOMINA" ,(DOUTOR PRA DOUTOR) , mas eu sou um paciente , em inicio de tratamento, estou aprendendo a ler a "bula" pra poder ,tomar o remédio (estou bem no início ainda) , precisaria ver o produto feito e funcionando, e reler passo a passo toda a sua explicação, pra conseguir entender (esforçar pra entender) , e aprender encontrar o fio da meada e praticar muito até dominar ..essa batalha chamada "array"....
Responder

24/05/2018

Antonio Gomes

Vou terminar de estudar ,sua explicação até o fim com ,muita atenção e já posso te adiantar , que a primeira impressão que eu tive de sua explicação é somente uma.
E está logo ai abaixo :
"DIVINO"....É assim que um aluno como eu "APRENDE DE VERDADE DA MANEIRA CORRETA".
Muitíssimo Agradecido.
Responder

24/05/2018

Antonio Gomes

A explicação pra mim ficou muitíssimo , mais fácil de entender, e acho que agora eu chego lá.
Peguei o teu código completo (a forma completa como está detalhada e explicada ) ,coloquei no "dreamweaver" e mandei abrir no navegador com a seguinte renomeação "apphpdspag98.ex4_corrigido.php" e com o seguinte código : "http://prntscr.com/jm5g3b" ,mas ai ele me deu o seguinte resultado : "http://prntscr.com/jm5ja1"....vou tentar ver se consigo resolver essa nova resposta, e se possível for , gostaria só de sua confirmação se estou indo no caminho certo...pois sua explicação ,como já disse antes está "DIVINA" ,do jeito que Deus aprova......
Responder

24/05/2018

Leandro Chiodini

Boa tarde
Primeiramente agradeço pelo elogio na forma de pontuar.

Vendo o seu codigo da imagem um,
alguma coisa deve ter ocorrido pois o codigo que mostra na imagem 1 https://prnt.sc/jm5g3b
ainda esta com os erros vistos anteriormente
repare que o seu segundo array ainda esta com o nome de $mel ao invés de estar com $meal

no segundo foreach tambem não esta de acordo com o primeiro foreach.
de uma olhadinha e veja se este é o script que você quer executar
Responder

24/05/2018

Antonio Gomes

Vou fazer isso.....
Responder

25/05/2018

Antonio Gomes

Bingooooooooooo !!!! , o senhor tem toda razão.....FUNCIONOU !!!!!

(Agradecido pela excelente explicação).
Responder

25/05/2018

Leandro Chiodini

Opa
precisando estamos sempre por aqui...
Responder

27/05/2018

Antonio Gomes

Opa
precisando estamos sempre por aqui...
Como eu faço mesmo para ele aparecer como "TÓPICO RESOLVIDO" ?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar