मैड प्रॉप्स टू @ डेव रेडफर्न ऑन स्लैक जिन्होंने मेरी समस्या की ओर इशारा किया। गैर-शून्य अनुक्रमित सरणी पास करते समय, इसे एक ऑब्जेक्ट के रूप में इंटरपेर किया जाता है।
dump(json_encode([
0 => "ROLE_SITE_DIRECTOR", 2 => "ROLE_TRANSLATOR", 1 => "ROLE_DATA_ENTRY",
]));
dump(json_encode(array_values([
0 => "ROLE_SITE_DIRECTOR", 2 => "ROLE_TRANSLATOR", 1 => "ROLE_DATA_ENTRY",
])));
आउटपुट होगा:
"{"0":"ROLE_SITE_DIRECTOR","2":"ROLE_TRANSLATOR","1":"ROLE_DATA_ENTRY"}"
"["ROLE_SITE_DIRECTOR","ROLE_TRANSLATOR","ROLE_DATA_ENTRY"]"
$this->roles = array_values($roles);
आगे बढ़ते हुए, भूमिकाओं के लिए डेटाबेस संबंधों का उपयोग करना भी एक बेहतर अभ्यास है। JSON डेटा द्वारा खोजना मज़ेदार नहीं है, लेकिन शामिल होना मानक अभ्यास है।