Merhaba,
foreach ($_POST as $key => $value )
Tam emin değilim ama $_POST'lar multi dimensional sanırım. Değilse burada key post edilen değişkeni value de düzeyi verir. yani ;
$_POST['soru_id'] = 4 ise $key soru_id value 4 verir.
altta $value['soru_id'] kullanımınız yanlış. ondan illegal offset alıyorsunuz. Ama soru_id name'li birden fazla input'unuz varsa illegal almamanız lazım. Bence test etmek için print_r gibi fonksiyonlarla gelen değerlerinizi bir kontrol edin.

Ben net anlayamadım mevzuları. Belki ekran görüntüsü html dizilimi ya da varsa canlı link atarak daha net aktarabilirsiniz sorunu.
Araştırarak öğrenmeniz güzel bence iyi bi noktadasınız. sadece deneyime dayalı bazı algoritmik eksiklikler var gibi. Onları da pratik yaparak çözersiniz.