The array modifier worked fine for me when I was creating a tire for my model. However when I used it again on this small cylinder, I expect the modifier will rotate the cylinder around the cursor and duplicate them, but it created strange figures as shown in the screenshot after I set it to object offset. Any help is appreciated :)
There are two issues here:
The duplicated cylinder is not the same size and orientation as the original. This is because you have not applied the scale and rotation on the first cylinder.
Your cylinders are not being duplicated around a circular path because the origin point of the cylinder should be where the empty is. Snap the cursor to the empty and then select the cylinder and click Object>Transform>Origin to 3D Cursor. Then once you rotate the empty on the Y axis you'll get the circular duplication you want.