次のような配列がある場合
[Yellow] => 1 [Red] => 2 [Blue] => 3
そして、$options を含むフォーム INPUT でこれらを使用してドロップダウン選択を行いたい場合、値 1/2/3 の代わりに色名 Yellow/Red/Blue を使用することは可能ですか?
現在、ドロップダウンには名前の代わりにオプションとして 1、2、3 があります。配列は別の場所で使用されており、何らかの理由でこの形式になっています。
メソッドを使用してarray_flip
、キーと値を交換できます
$array = array('Yellow' => 1, 'Red' => 2, 'Blue' => 3);
$flippedArray = array_flip($array);
// => [1] => 'Yellow', [2] => 'Red', [3] => 'Blue'
次に、フォームヘルパーを使用してselect要素のオプションとしてflippedArrayを使用します
echo $this->Form->select('colours', $flippedArray);
または、選択要素の新しい配列に色を組み合わせることができます
$combinedArray = array_combine(array_keys($array), array_keys($array));
//=> [Yellow] => 'Yellow', [Red] => 'Red', [Blue] => 'Blue'
echo $this->Form->select('colours', $combinedArray);
このようにして、必要に応じて、フォームから返された値を元の配列のキーとして使用できます