{"name":"getArray","title":"getArray","type":"command","url":"https://community.bistudio.com/wiki/getArray","revid":377159,"updated":"2026-01-01T10:40:02Z","groups":["Config"],"status":"ok","games":{"arma1":"1.00","arma2":"1.00","arma2oa":"1.50","tkoh":"1.00","arma3":"0.50"},"since":"arma1 1.00","arma3_since":"0.50","description":"Extract array from config entry.","syntaxes":[{"syntax":"getArray config","params":[{"name":"config","type":"Config","type_expr":"Config"}],"returns":{"type":"Array of Anything","type_expr":"Array<Anything>"},"form":"unary","right":{"text":"config"}}],"examples":[{"code":["_array = getArray (configFile >> \"CfgVehicles\" >> \"Thing\" >> \"threat\");"]}],"see_also":["configFile","a / b","configName","count","getText","getNumber","inheritsFrom","isArray","isClass","isNumber","isText","select"],"notes":[{"user":"ffur2007slx2_5","date":"2014-03-28T07:52:00Z","text":"(Arma 3 1.14) It's recommended to use BIS_fnc_getCfgData or BIS_fnc_returnConfigEntry to get variable cfg data rather than conditioning via isNumber, isText, isArray, getNumber, getText and getArray combination.\nTraditional workaround:\n\n```sqf\n_cfg = configFile >> \"CfgVehicles\" >> _SomeAddonClassName >> \"DestructionEffects\" >> \"Smoke1\" >> \"type\";\nswitch ( true ) do\n{\n    case (isNumber _cfg): {getNumber _cfg};\n    case (isText _cfg): {getText _cfg};\n    case (isArray _cfg): {getArray _cfg;};\n    default { nil };\n};\n```\n\n**Recommended workaround:**\n\n```sqf\n(configFile >> \"CfgVehicles\" >> _SomeAddonClassName >> \"DestructionEffects\" >> \"Smoke1\" >> \"type\") call BIS_fnc_getCfgData;\n```\n\nTo return default value once entry was not found, we can use BIS_fnc_returnConfigEntry instead of BIS_fnc_getCfgData.\n\n```sqf\n[(configFile >> \"CannonFire\" >> \"LightExp\"),\"lifeTime\",0] call BIS_fnc_returnConfigEntry; // 0.5\n```"},{"user":"demellion","date":"2018-01-12T19:48:00Z","text":"There is special behaviour if you try to read a description.ext config entry Array that contains a Boolean.\nGetting array in **MP** will result in Number, while **SP** will return String.\n\n```sqf\n// SP with false in array\ngetArray (missionConfigFile >> \"someClass\" >> \"someArray\") // -> \"false\"\n\n// MP with false in array\ngetArray (missionConfigFile >> \"someClass\" >> \"someArray\") // -> 0\n```"}]}