Several people are injured after a gunman opened fire by the checkout of a Walmart during an argument with another customer.
Police said Keenan Jones, 30, fired at least 10 shots as shoppers ran for cover during the fracas in the Philadelphia suburbs.
Officials said Mr Jones and his sister fled the supermarket before crashing into a police car. Police said both were detained as Mr Jones fought with officers.
The victims' injuries were reportedly not life threatening.
He is charged with one count of attempted murder, 13 counts of aggravated assault and 19 counts of reckless endangerment, as well as gun charges.
His sister has not been named or charged.
Mr Jones has previous convictions that bar him from possessing a gun, WPVI-TV reported. He is being held on $1m cash bail.
"The surveillance depicts Jones standing in the checkout line and then starting to walk towards the back of the line when he pulls out a black semi-automatic handgun and fires a single round at a male who is standing only feet away, striking him," NBC Philadelphia reported, quoting the criminal complaint.
"Jones then begins to run through the front end of the store and is seen firing additional rounds indiscriminately."
Cheltenham Township police chief John Frye told a news conference on Tuesday night there seemed to have been "some sort of altercation at the cash register".
"Words were exchanged," he said.
UPDATE 7PM - Situation is active and ongoing. 6 PPD Officers shot - continue to receive treatment at area hospitals. Shooter is still armed inside location. AVOID AREA— Eric Gripp (@PPDEricGripp) August 14, 2019
Mr Frye said the suspect "pulled the gun from the female's waistband and started shooting".
He did not specify the nature of the argument at the checkout, which happened just after 6pm local time when the store was crowded with shoppers.
Two women and a man were shot in the leg. Another person suffered a graze wound, and a pregnant woman was taken to hospital after falling.
Witnesses said they saw a handgun being tossed out of the car's window after the pair fled.
Once placed inside the police car, Jones allegedly tried to kick out the window and attacked officers even though he was cuffed, local media reported.
They used a stun gun to subdue him. Two officers suffered minor injuries in the struggle and were taken to hospital.
Chief Frye said hospital reports suggested the shooter was "definitely on some type of drugs".
WPVI-TV captured footage of the suspect being brought to the police station in hand and leg cuffs.
"I'm sorry, man," he said to the camera. "I thought somebody was going to kill me."
More than 22 police departments responded to the crime scene, and Swat teams were called to clear the building and surrounding businesses in the plaza.
In a statement, Walmart confirmed that three of those injured were employees.
"We are relieved that an arrest has been made and thankful that injuries sustained by three of our associates and a customer are non-life threatening," said Walmart representative Randy Hargrove.