Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Array Multdimenssional

Tenho o seguinte código:

$clientes_pets =[
     [
        'proprietario'=>'Marines',
        'nomePet' => 'Amora',
        'Raca' => 'Shit-zu',
        'ValorPago' => 40,
        'pacote'=> true,
    ],


[
    'proprietario'=>'Liana',
    'nomePet'=> 'Amora','Belinha',
    'Raca' => 'Shit-zu',
    'ValorPago' => 70,
    'pacote'=> false,
],

[
    'proprietario'=>'Rebeca',
    'nomePet' => 'Cascão','Pegasus',
    'Raca' => 'Labrador',
    'ValorPago' => 110,
    'pacote'=> false,
],

[
    'proprietario' => 'Marcia',
    'nomePet' => 'Shiuy','Lizy','Emmy',
    'Raca' => 'York shire',
    'ValorPago' => 75,
    'pacote'=> false,
],

[
    'proprietario'=>'Paulo',
    'nomePet' => 'Yank',
    'Raça' => 'York shire',
    'ValorPago' => 35,
    'pacote'=> true,
],

[
    'proprietario'=>'Claudia',
    'nomePet' => 'Bob','Ted',
    'Raca' => 'York shire',
    'ValorPago' => 70,
    'pacote'=> false,
],

[
    'proprietario'=>'Mirna',
    'nomePet' => 'Mel',
    'Raca' => 'Golden',
    'ValorPago' => 55,
    'pacote'=> false,
],

[
    'proprietario'=>'Manoel',
    'nomePet' => 'Oliver',
    'Raca' => 'Golden',
    'ValorPago' => 55,
    'pacote'=> false,
 ],
];

foreach ($clientes_pets as $cliente){

    echo $cliente['proprietario']. PHP_EOL;
    echo $cliente['nomePet']. PHP_EOL;
}
echo "Total de Clientes : ".count($clientes_pets). PHP_EOL;

Pegando o exemplo do Array da Cláudia perceba que na variável nomePet eu tenho dois valores, porém na saída do programa só me mostra um valor ou seja um dos nomes dos pets. Como posso modificar para me aparecer os dois valores naquele cliente específico?

3 respostas
solução!

Olá Anderson, Tudo bem com você?

Dê uma olhada nesta solução abaixo. Consiste em informar que o valor associado a 'nomePet' é um array também, ou seja, pode conter mais de um valor.

Assim, envolvi os valores de 'nomePet' em colchetes [].

Dai lá embaixo no código você pode usar um foreach dentro do foreach novamente para passar por cada um dos elementos de 'nomePet'.

Desculpe reduzi um pouco o código para ficar mais claro. E também coloquei alguma formatação para eu poder testar o resultado. Neste caso conseguirá exibir mais de um nome para cada cliente.

 $clientes_pets =[
    [
       'proprietario'=>'Marines',
       'nomePet' => ['Amora'],
       'Raca' => 'Shit-zu',
       'ValorPago' => 40,
       'pacote'=> true,
   ],


[
   'proprietario'=>'Liana',
   'nomePet'=> ['Amora','Belinha'],
   'Raca' => 'Shit-zu',
   'ValorPago' => 70,
   'pacote'=> false,
],

[
   'proprietario'=>'Claudia',
   'nomePet' => ['Bob','Ted'],
   'Raca' => 'York shire',
   'ValorPago' => 70,
   'pacote'=> false,
],

];

echo "<pre>";

foreach ($clientes_pets as $cliente){

   echo $cliente['proprietario']. PHP_EOL;

   foreach($cliente['nomePet'] as $pet) {
      echo $pet . PHP_EOL;
   }

   echo "<BR>";
}

echo "Total de Clientes : ".count($clientes_pets). PHP_EOL;

echo "</pre>";


Top Cara muito bom, Vlw!

Mas agora me incorre o seguinte erro não estou enxergando:

<?php
$clientes_pets = [
    [
        'proprietario' => 'Marines',
        'nomePet' => ['Amora'],
        'Raca' => 'Shit-zu',
        'ValorPago' => 40,
        'pacote' => true,
    ],


    [
        'proprietario' => 'Liana',
        'nomePet' => ['Amora', 'Belinha'],
        'Raca' => 'Shit-zu',
        'ValorPago' => 70,
        'pacote' => false,
    ],

    [
        'proprietario' => 'Rebeca',
        'nomePet' => ['Cascão', 'Pegasus'],
        'Raca' => 'Labrador',
        'ValorPago' => 110,
        'pacote' => false,
    ],

    [
        'proprietario' => 'Marcia',
        'nomePet' => ['Shiuy', 'Lizy', 'Emmy'],
        'Raca' => 'York shire',
        'ValorPago' => 75,
        'pacote' => false,
    ],

    [
        'proprietario' => 'Paulo',
        'nomePet' => ['Yank'],
        'Raça' => 'York shire',
        'ValorPago' => 35,
        'pacote' => true,
    ],

    [
        'proprietario' => 'Claudia',
        'nomePet' => ['Bob', 'Ted'],
        'Raca' => 'York shire',
        'ValorPago' => 70,
        'pacote' => false,
    ],

    [
        'proprietario' => 'Mirna',
        'nomePet' => ['Mel'],
        'Raca' => 'Golden',
        'ValorPago' => 55,
        'pacote' => false,
    ],

    [
        'proprietario' => 'Manoel',
        'nomePet' => ['Oliver'],
        'Raca' => 'Golden',
        'ValorPago' => 55,
        'pacote' => false,
    ],
];

foreach ($clientes_pets as $cliente) {
    echo $cliente['proprietario'] . PHP_EOL;

    foreach ($cliente as $pets) {
        echo $pets. PHP_EOL;
    }
}
echo "Total de Clientes : " . count($clientes_pets) . PHP_EOL;

na Saída da o seguinte erro:

C:\xampp\htdocs\alura\avancado>php forech.php Marines Marines PHP Notice: Array to string conversion in C:\xampp\htdocs\alura\avancado\forech.php on line 152

Notice: Array to string conversion in C:\xampp\htdocs\alura\avancado\forech.php on line 152 Array Shit-zu 40 1 Liana Liana PHP Notice: Array to string conversion in C:\xampp\htdocs\alura\avancado\forech.php on line 152

Notice: Array to string conversion in C:\xampp\htdocs\alura\avancado\forech.php on line 152 Array Shit-zu 70

Rebeca Rebeca PHP Notice: Array to string conversion in C:\xampp\htdocs\alura\avancado\forech.php on line 152

. . .

e por aí vai.

Anderson, Tudo bem?

O problema me parece esta no foreach, veja a sua linha abaixo:

foreach ($cliente as $pets)

Alterar para:

foreach($cliente['nomePet'] as $pet)

Bons estudos e um abraço!