Array to string conversion

Ce sujet est résolu
177925
,

Bonjour,

Voila je rencontre un petit problème avec mon code.
j'ai cette erreur: "Array to string conversion" et voici la ligne qui crée cette erreur: C:\cygwin64\home--------\blogTest\src\HTML\Form.php

    public function select(string $key, string $label, array $options = []):string
    {
        $optionsHTML = [];
        foreach ($options as $k => $v){
            $optionsHTML[] = "<option value\"$k\">$v</option>";
        }
        $value = $this->getValue($key);
        $optionsHTML[] = implode('', $optionsHTML);
        return <<<HTML
    <div class="form-group">
         <label for="field{$key}">{$label}</label>
     cette ligne =>    <select id="field{$key}" name="{$key}" class="{$this->getInputClass($key)}" required multiple>{$optionsHTML}</select>
         {$this->getErrorFeedback($key)}
    </div>
HTML;
    }

voici les argument que j'ai

8

"Array to string conversion"

"C:\cygwin64\home\BAYONG Cyrille 22\blogTest\src\HTML\Form.php"

51

array:7 [▼
"key" => "categories"
"label" => "Catégories"
"options" => array:5 [▼
4 => "Omnis deserunt est."
3 => "Pariatur molestiae autem rem."
2 => "Quasi et et."
5 => "Quia quia pariatur."
1 => "Vitae aliquid ullam tempore."
]
"optionsHTML" => array:6 [▼
0 => "Omnis deserunt est."
1 => "Pariatur molestiae autem rem."
2 => "Quasi et et."
3 => "Quia quia pariatur."
4 => "Vitae aliquid ullam tempore."
5 => "Omnis deserunt est.Pariatur molestiae autem rem.Quasi et et.Quia ▶"
]
"v" => "Vitae aliquid ullam tempore."
"k" => 1
"value" => []
]

merci d'avance pour votre aide

3 Réponse

35326
,

Salut,
remplaces $optionsHTML[] = implode('', $optionsHTML); par $optionsHTML = implode('', $optionsHTML); et ça devrait fonctionner.

Tu vas avoir un problème aussi avec $optionsHTML[] = "<option value\"$k\">$v</option>";, il manque un signe = après value

40917
,

Bonjour,
Oui optionsHTML est un tableau et toi il te faut un string
Donc soit tu fais un "explode" de ton tableau pour le mettre dans ton select
Soit lors du foreach, tu fais une concaténation au lieu d'un tableau

177925
,

Bonjour,
merci a toi @Balsakup, ta solution a resolu le problème.