太好了 😆 直接給你一支「可落地」的 PHP 範例。

這份程式會做：

1. 定義：

前綴詞

海洋動物

三類配件（A 頭戴 / B 身體 / C 手持）

前綴詞對應必拿物品



2. 隨機產生：

不重複名稱（用函式佔位）

三個配件（符合規則）



3. 產生兩種提示詞：

基礎提示詞

含動作佔位提示詞



4. 列出資料庫欄位建議




---

🧠 PHP 程式

<?PHP
/**
 * -----------------------------------------
  * 一、定義資料
   * -----------------------------------------
    */

    // 前綴詞對應必拿物品$prefixMap = [
            "星空" => ["item" => "星光披肩", "type" => "B"],
                "邱比特" => ["item" => "邱比特弓箭", "type" => "C"],
                    "誓約" => ["item" => "金色戒指", "type" => "B"],
                        "花嫁" => ["item" => "白頭紗", "type" => "A"],
                            "王冠" => ["item" => "小皇冠", "type" => "A"],
                                "祝福" => ["item" => "迷你捧花", "type" => "C"],
                                    "情書" => ["item" => "愛心信封", "type" => "C"],
                                        "珍珠" => ["item" => "珍珠項鍊", "type" => "B"],
                                            "月光" => ["item" => "月桂花冠", "type" => "A"],
                                                "甜心" => ["item" => "愛心氣球", "type" => "C"],
                                                    "鈴音" => ["item" => "小鈴鐺", "type" => "C"],
                                                        "星願" => ["item" => "水晶星星吊飾", "type" => "B"],
                                                            "海誓" => ["item" => "貝殼法杖", "type" => "C"],
                                                                "盟約" => ["item" => "緞帶腰飾", "type" => "B"],
                                                                    "花語" => ["item" => "花環", "type" => "A"],
                                                                        "光芒" => ["item" => "星光王冠", "type" => "A"],
                                                                            "心願" => ["item" => "泡泡權杖", "type" => "C"],
                                                                                "溫柔" => ["item" => "蕾絲披肩", "type" => "B"],
                                                                                    "童話" => ["item" => "小翅膀", "type" => "B"],
                                                                                        "圓滿" => ["item" => "花朵圍巾", "type" => "B"],
    ];

    // 海洋生物
    $animals = [
            "海馬", "海豚", "海星", "水母", "小丑魚",
                "海龜", "魟魚", "章魚", "曼波魚", "海豹"
    ];

    // A 頭戴
    $itemsA = ["白頭紗", "小皇冠", "花環", "月桂花冠", "星光王冠", "貝殼髮飾", "緞帶蝴蝶結", "珍珠髮飾"];

    // B 身體$itemsB = ["星光披肩", "金色戒指", "珍珠項鍊", "蕾絲披肩", "緞帶腰飾", "花朵圍巾", "水晶星星吊飾", "小翅膀"];

    // C 手持
    $itemsC = ["邱比特弓箭", "迷你捧花", "愛心氣球", "愛心信封", "泡泡權杖", "小鈴鐺", "貝殼法杖", "小禮物盒"];


    /**
     * -----------------------------------------
      * 二、工具函式
       * -----------------------------------------
        */

        // 隨機抽一個
        function pickOne($array) {
                return $array[array_rand($array)];
        }

        // 檢查名稱是否重複（這裡放佔位，實際請查 DB）
        function isNameDuplicate($name) {
                // TODO: 實際改成資料庫查詢
                    return false;
        }


        /**
         * -----------------------------------------
          * 三、產生神寵
           * -----------------------------------------
            */

            function generateCreature($prefixMap, $animals, $itemsA, $itemsB, $itemsC) {

                    // 1. 抽前綴詞
                        $prefix = pickOne(array_keys($prefixMap));
                            $animal = pickOne($animals);

                                $name = $prefix . $animal;

                                    // 2. 避免重複名稱
                                        while (isNameDuplicate($name)) {
                                                    $prefix = pickOne(array_keys($prefixMap));
                                                            $animal = pickOne($animals);
                                                                    $name = $prefix . $animal;
                                        }

                                            // 3. 必拿物品
                                                $requiredItem = $prefixMap[$prefix]["item"];
                                                    $requiredType = $prefixMap[$prefix]["type"];

                                                        $finalItems = [
                                                                    "A" => null,
                                                                            "B" => null,
                                                                                    "C" => null,
                                                        ];

                                                            $finalItems[$requiredType] = $requiredItem;

                                                                // 4. 其他類別隨機補齊    if ($requiredType !== "A") {
                                                                            $finalItems["A"] = pickOne($itemsA);
                                                                }

                                                                    if ($requiredType !== "B") {
                                                                                $finalItems["B"] = pickOne($itemsB);
                                                                    }

                                                                        if ($requiredType !== "C") {
                                                                                    $finalItems["C"] = pickOne($itemsC);
                                                                        }

                                                                            // 5. 生物特徵（簡化範例）
                                                                                $bodyColor = pickOne(["粉藍色", "粉紫色", "珊瑚橘", "湖水綠", "奶油白"]);
                                                                                    $style = "清新手繪插畫／粉彩感／柔和光暈";

                                                                                        // 6. 產生提示詞
                                                                                            $basePrompt = "
                                                                                            給我一個「{$name}」插畫，尺寸 200x200px

                                                                                            風格：{$style}
                                                                                            主體：Q版海洋生物，身體顏色為{$bodyColor}，表情快樂、友善
                                                                                            配件：
                                                                                            - 頭戴：{$finalItems["A"]}
                                                                                            - 身體裝飾：{$finalItems["B"]}
                                                                                            - 手持物品：{$finalItems["C"]}

                                                                                            背景：淺色海水漸層構圖：主體置中，保留圓形裁切安全邊界
                                                                                            不要出現文字
                                                                                            ";

                                                                                                $actionPrompt = $basePrompt . "

                                                                                                動作：{{ACTION_PLACEHOLDER}}
                                                                                                ";

                                                                                                    return [
                                                                                                                "name" => $name,
                                                                                                                        "prefix" => $prefix,
                                                                                                                                "animal" => $animal,
                                                                                                                                        "body_color" => $bodyColor,
                                                                                                                                                "style" => $style,
                                                                                                                                                        "items" => $finalItems,
                                                                                                                                                                "base_prompt" => trim($basePrompt),
                                                                                                                                                                        "action_prompt" => trim($actionPrompt),
                                                                                                    ];
            }


            // 測試
            $result = generateCreature($prefixMap, $animals, $itemsA, $itemsB, $itemsC);
            print_r($result);


            ---

            🗄 建議資料庫欄位設計

            建議資料表：wedding_creatures

            欄位名稱類型說明

            idbigint主鍵
            rsvp_idbigint對應 RSVP
            namevarchar完整名稱（星空海豚）
            prefixvarchar前綴詞
            animalvarchar生物名
            body_colorvarchar身體顏色
            illustration_stylevarchar插畫風格
            item_headvarchar頭戴物品
            item_bodyvarchar身體物品
            item_handvarchar手持物品
            prompt_basetext原始提示詞
            prompt_actiontext含動作提示詞
            image_urlvarchar生成圖片位置
            created_atdatetime建立時間



            ---

            🎯 你現在有的能力

            這支程式已經能：

            控制前綴詞必拿物品

            保證三類配件各一

            不重複名稱（只差 DB 實作）

            同時產出兩種 Prompt

            可直接送去 Gemini ACTION_PLACEHOLDER
            你這個婚禮系統真的很像在做遊戲 😆


            
                                                                                                    ]
                                                                        }
                                                                    }
                                                                }
                                                        ]
                                        }
            }
        }
        }
    ]
    ]