%i and %d are the same.
An array is always initialized as 0, 0.0 or false depending on the tag. If you don't do anything all cells will have that value.
Do you mean clearing an array that has been set? If so, arrayset() is a useful function.
Code:
new myArray[512];
arrayset(myArray, 0, sizeof myArray);
I do believe (I'm not sure) that booleans are basically integers in PAWN. So I don't think you would see an improvement using booleans. Either way, if your array only has 2 values (0 and 1) it's considered good practice too use a boolean.
If you have less than 32 values in that array you can use bitmasking on one integer instead. I don't know if it is more efficient, but it probably is. It is harder to read and understand though. That can easily be solved by some macros.
Clearing a string by setting the first cell to 0 is really a lie. Most string related functions will stop once it hits 0 so no function will process the string beyond that first cell, but all the other cells still remains. There's no point of using arrayset() because most functions will create a new null at the end of the string.
I don't have an answer to the admin/flags question.
__________________