Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RichardOptions

[Iniciante] Exercícios e dúvidas, arrays e afins [Resolvido]

Recommended Posts

Olá pessoal, estou fazendo alguns exercícios de PHP, no total são 10, já fiz 5. Preciso entregá-los em 2 dias e estou perdido, por isso resolvi tentar a sorte por aqui.

Estou com dificuldades, já assisti várias aulas, já pesquisei bastante no google, li bastante coisa do manual oficial, mas ainda não consegui desenvolver uma solução, então vou mostrar como estou fazendo e ver se algum de vocês me ajuda a continuar daqui.

A intenção é: ao receber por GET a variável “letra”, deverá exibir apenas o nome dos alunos, em ordem alfabética, cuja inicial for a letra indicada.
Se não houver alunos com a letra informada, a página deverá exibir a mensagem: "Não existem alunos com essa letra".


Eu preciso de uma ajuda pra prosseguir, pois confesso estar perdido, pois na minha cabeça eu imagino como prosseguir, mas na prática tudo que eu tentei não chega perto, não sei se devo criar uma função, fazer direto dentro do foreach e não sei qual função usar pra fazer essa filtragem, substr ou alguma outra.

Desde já, agradeço a colaboração de vocês!

<?php

$getLetra = $_GET['letra'];

$alunos = array(
"Antonio",
"Arlindo",
"Bia",
"Bruna",
"Catarina",
"Claudio",
"Daiane",
"Diogines",
"Edson",
"Eleonor"
);

echo "A letra para o filtro dos nomes foi: " . $getLetra . "</br></br>";

foreach($alunos as $nomes) {
echo $nomes . "</br>";
}
?>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

As instruções e explicações já estão inseridas nos comentários no código, só ler, entender, testar e adaptar no que for necessário.

Vou deixar os links da documentação de cada função usada pra você ler:

sort():

http://php.net/manual/pt_BR/function.sort.php

isset():

http://php.net/manual/pt_BR/function.isset.php

strtolower():

http://php.net/manual/pt_BR/function.strtolower.php

substr():

http://php.net/manual/pt_BR/function.substr.php

Código:

<?php

header('Content-Type: text/html; charset=utf-8');

// !empty($_GET['letra']) verifica se o parâmetro letra existe na url e se existir verifica se não está vazio
if(!empty($_GET['letra'])){

	$getLetra = $_GET['letra'];

	$alunos = array(
	"Antonio",
	"Arlindo",
	"Bruna",
	"Bia",
	"Catarina",
	"Claudio",
	"Daiane",
	"Diogines",
	"Edson",
	"Eleonor"
	);

	echo "A letra para o filtro dos nomes foi: " . $getLetra . "</br></br>";

	foreach($alunos as $nome) {
		// str_tolower() : transforma toda letra em minúscula
		// substr($nome, 0, 1) pega o primeiro caractere
		if(strtolower(substr($nome, 0, 1)) == strtolower($getLetra)){
			// $alunos_encontrados[] cria um array dinâmico e vai adicionando os nomes encontrados nele
			$alunos_encontrados[] = $nome;
		}
	}
	// isset($alunos_encontrados) verifica se $alunos_encontrados já foi definido
	if(isset($alunos_encontrados)){
		// sort($alunos_encontrados) organiza o array por ordem alfabética ou numérica com base nos valores
		sort($alunos_encontrados);
		echo "<pre>";
		print_r($alunos_encontrados);
		echo "</pre>";
	} else {
		echo "Não existem alunos com essa letra";
	}
}	
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno, muito obrigado pela paciência e pela sua ajuda, ainda mais nesse horário, sem mais palavras para agradecer.

 

Deixa eu te passar o feedback então, eu já tinha passado pelo sort, isset e substr, mas eu não consegui encaixar essas coisas todas pra fazer funcionar, olhando agora o código que você fez, parece simples, mas estava nisso há horas.

 

Ah, adicionei aqui também um 

else {
    echo "É necessário informar a letra";
}

No caso da "letra" vir vazia, avisar que precisa informar uma letra, agora está 100% dentro do pedido.

 

Enfim, são 10 exercícios, com esse finalizado, só faltam 4, pra quem está desde às 16h de ontem e sem horário pra acabar, novamente o meu muito obrigado pela ajuda e pela explicação!

 

Agora vou tentar resolver os outros que são complicados pra mim ainda, mas menos sobrecarregado!

 

Sucesso meu parceiro!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
×

Informação importante

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