Php Array Sorunu
-
Bir sayfadan veri çekiyorum ve bunları json olarak çıktı alıyorum, fakat 2 gündür uğraşıyorum yinede istediğim gibi yapamadım. Verileri almakta sorunum yok bunları diziye atıp bazılarında dizi içinde dizi var, bu kısımda sorunum var. Kabaca şöyle açıklayayım, istediğim birden fazla alanları divlerden ayırıyorum, div içinde başlıklar, image urlsi,youtube url si var ve bu başlığa ait birden fazla paragraflar var. Başlıkları diziye attıktan sonra her başlığa göre gerekli paragraflarıda başlık dizinin içine yine dizi olarak atıyorum, fakat çıktı aldığımda ilk dönen diziye ek olarak ikinci dizi ilk dizinin paragraflarınıda ekleyip ikinci dizeye katıyor, sonra üç dört..... bu şekilde gidiyor ekleye ekleye. Ben sadece ilgili başlıktaki ilgili paragrafların eklenmesi istiyorum, yaptığım kodta mantık hatası mı var yoksa kullanmam gereken farklı bir komut mu var anlamadım ve işin içinde çıkamıyorum. Döngü içinde döngü olduğundan art arda ekleme yapıyorum, döngü dışında array_merge denedim oda iki ayrı dizi yapıyor. Anlatım karışık olabilir kusura bakmayın. kod bloğu aşağıda
$prg=explode('<div class="sqs-block html-block sqs-block-html"',$cek); // cek değişkeni data kaynağı
$sira=0;
$data=array();
$top=array();
foreach ($prg as $parg) /// başlık ve paragrafların döngüsü
{
$sira++;
if ($sira > 1)
{
$prga=ara('<div class="sqs-block-content">','</div>',$parg);
$fotos=ara('<img src="','"',$parg);
$video=ara('/embed/','?wmode',$parg);
$youtube=$video[0];
foreach ($prga as $sonprg) /// Başlıkların döngüsü
{
$h3=ara('<h3 style="white-space:pre-wrap;">','</h3>',$sonprg);
$pclass=ara('<p class="" style="white-space:pre-wrap;">','</p>',$sonprg);
foreach ($pclass as $satirbas) // başlık altındaki paragrafların döngüsü
{
if(!strstr($satirbas, 'podcast')) // içinde podcast geçmeyenleri al
{
$paragraf=strip_tags($satirbas);
$paragraf_ekle=array("metin"=>$paragraf);
array_push($top,$paragraf_ekle); // paragrafları boş bir diziye ekleme
}
}
if (!empty($h3[0]))
{
$baslik_ekle = array(
"h3" => $h3[0],
"fotograf" => $fotos[0],
"youtube" => $youtube,
"paragraf" => $top // burdada paragrafları dizi içine alıyorum.
);
array_push($data,$baslik_ekle); // başlıkları ve paragrafları boş bir diziye ekleme
}
}
}
}
echo json_encode($data);
TheMayk tarafından 28/Oca/22 16:59 tarihinde düzenlenmiştir
Ekran görüntüsü 1 ile işaretlediğim yer olması gereken, fakat 2 ci işaretlediğim yer olmaması gerekir, 3. işaretli yer gibi olmalı. fakat 1 başlığın paragraflarını 2. başlağın paragrafına dahil edip sonra geresini ekliyor. -
hocam kodların cok karısık ama anladıgım kadarıyla
başlıkların dongusunun başına
$top = [];
eklersen sorunun cozunur gıbı
-
lazz bunu yazdı
hocam kodların cok karısık ama anladıgım kadarıyla
başlıkların dongusunun başına
$top = [];
eklersen sorunun cozunur gıbı
Teşekkürler hocam çok sağolun, beni 2 günlük uğraştan sonunda kurtardınız. Tam istediğim gibi oldu şuan.