Php Array Bölme Ve Combine ?
-
selamlar müridler, uzun zamandır php ile ilgilenmiyordum haliyle çoğu şeyi unutmuşum.
elimde aşağıdaki gibi binlerce array var
örnek:
ID =>[1] => Array
([0] => Wales >North Wales>Nefyn)ID =>[2] => Array
([0] => Spain >Costa del Sol>Mijas Costa>La Cala de Mijas )bunu şu şekle nasıl sokarım
ID =>[1] => Array
(
[0] => Wales
[1] => North Wales
[2] => Nefyn
)ID =>[2] => Array
(
[0] => Spain
[1] => Costa del Sol
[2] => Mijas Costa
[3] => La Cala de Mijas
) -
İlki için;
$array1 = explode(">", $id[1][0]);İkincisi için;
$array2 = explode(">", $id[2][0]);
Explode belirtilen ayraç ile stringi array'a çevirir.
$id[1] = $array1;
$id[2] = $array2;
-
aercys bunu yazdı
İlki için;
$array1 = explode(">", $id[1][0]);İkincisi için;
$array2 = explode(">", $id[2][0]);
Explode belirtilen ayraç ile stringi array'a çevirir.
$id[1] = $array1;
$id[2] = $array2;
Hocam zaten array hepsi, veritabanından id ve breadcrumb kolonlarını çekiyorum. while dışına çıkarınca array oluyor hepsi sonra
foreach ($id as $ida => $key) {
$result[$key] = array($breadcrumb[$ida]);
}
bu kodla birleştiriyorum tek bir array yapıyorum. Hangi breadcrumb kolonu hangi id ye aitse o idli arrayın altına ekliyor.
arraya sokmadan implode olarak bölebiliyorum sonra explode ile tekrar array yapıyorum ama aynı id arrayının altına girmiyor. off çok karışık gerçekten anlatamıyorum bile :)
-
Ratbat bunu yazdıaercys bunu yazdı
İlki için;
$array1 = explode(">", $id[1][0]);İkincisi için;
$array2 = explode(">", $id[2][0]);
Explode belirtilen ayraç ile stringi array'a çevirir.
$id[1] = $array1;
$id[2] = $array2;
Hocam zaten array hepsi, veritabanından id ve breadcrumb kolonlarını çekiyorum. while dışına çıkarınca array oluyor hepsi sonra
foreach ($id as $ida => $key) {
$result[$key] = array($breadcrumb[$ida]);
}
bu kodla birleştiriyorum tek bir array yapıyorum. Hangi breadcrumb kolonu hangi id ye aitse o idli arrayın altına ekliyor.
arraya sokmadan implode olarak bölebiliyorum sonra explode ile tekrar array yapıyorum ama aynı id arrayının altına girmiyor. off çok karışık gerçekten anlatamıyorum bile :)
Hocam implode array elemanlarını birşleştirip string oluşturur, explode string elemanlarını parçalar.
Şimdi anladığım kadarı ile özetleyeyim; Senin array'ın aşağıdaki formatta
$result[1] = " Wales >North Wales>Nefyn";
$result[2] = " Spain >Costa del Sol>Mijas Costa>La Cala de Mijas";
Yukarıdaki yapıyı,
$result[1] = array("Wales" , "North", "Wales" , "Nefyn");
$result[2] = array( "Spain" , "Costa del Sol", "Mijas Costa" , "La Cala de Mijas");
Bu hale getirmek istiyorsun doğrumudur?
aercys tarafından 30/Oca/15 14:52 tarihinde düzenlenmiştir -
aercys bunu yazdıRatbat bunu yazdıaercys bunu yazdı
İlki için;
$array1 = explode(">", $id[1][0]);İkincisi için;
$array2 = explode(">", $id[2][0]);
Explode belirtilen ayraç ile stringi array'a çevirir.
$id[1] = $array1;
$id[2] = $array2;
Hocam zaten array hepsi, veritabanından id ve breadcrumb kolonlarını çekiyorum. while dışına çıkarınca array oluyor hepsi sonra
foreach ($id as $ida => $key) {
$result[$key] = array($breadcrumb[$ida]);
}
bu kodla birleştiriyorum tek bir array yapıyorum. Hangi breadcrumb kolonu hangi id ye aitse o idli arrayın altına ekliyor.
arraya sokmadan implode olarak bölebiliyorum sonra explode ile tekrar array yapıyorum ama aynı id arrayının altına girmiyor. off çok karışık gerçekten anlatamıyorum bile :)
Hocam implode array elemanlarını birşleştirip string oluşturur, explode string elemanlarını parçalar.
Şimdi anladığım kadarı ile özetleyeyim; Senin array'ın aşağıdaki formatta
$result[1] = " Wales >North Wales>Nefyn";
$result[2] = " Spain >Costa del Sol>Mijas Costa>La Cala de Mijas";
Yukarıdaki yapıyı,
$result[1] = array("Wales" , "North", "Wales" , "Nefyn");
$result[2] = array( "Spain" , "Costa del Sol", "Mijas Costa" , "La Cala de Mijas");
Bu hale getirmek istiyorsun doğrumudur?
hocam print_r çektiğimde sonuç aşağıdaki gibi geliyor.
Array ( [1] => Array ( [0] => Wales >North Wales>Nefyn ) [2] => Array ( [0] => Spain >Costa del Sol>Mijas Costa>La Cala de Mijas) )
istediğim şu şekilde değiştirmek bu yapıyı
Array ( [1] => Array ( [0] => Wales [1] => North Wales [2] =>Nefyn ) [2] => Array ( [0] => Spain [1] => Costa del Sol [2] => Mijas Costa [3] => La Cala de Mijas ) )
array [1] ve [2] veritabanından gelen id bölüp tekrar aynı id nin altına sokmak istiyorum.
-
Ratbat bunu yazdıaercys bunu yazdıRatbat bunu yazdıaercys bunu yazdı
İlki için;
$array1 = explode(">", $id[1][0]);İkincisi için;
$array2 = explode(">", $id[2][0]);
Explode belirtilen ayraç ile stringi array'a çevirir.
$id[1] = $array1;
$id[2] = $array2;
Hocam zaten array hepsi, veritabanından id ve breadcrumb kolonlarını çekiyorum. while dışına çıkarınca array oluyor hepsi sonra
foreach ($id as $ida => $key) {
$result[$key] = array($breadcrumb[$ida]);
}
bu kodla birleştiriyorum tek bir array yapıyorum. Hangi breadcrumb kolonu hangi id ye aitse o idli arrayın altına ekliyor.
arraya sokmadan implode olarak bölebiliyorum sonra explode ile tekrar array yapıyorum ama aynı id arrayının altına girmiyor. off çok karışık gerçekten anlatamıyorum bile :)
Hocam implode array elemanlarını birşleştirip string oluşturur, explode string elemanlarını parçalar.
Şimdi anladığım kadarı ile özetleyeyim; Senin array'ın aşağıdaki formatta
$result[1] = " Wales >North Wales>Nefyn";
$result[2] = " Spain >Costa del Sol>Mijas Costa>La Cala de Mijas";
Yukarıdaki yapıyı,
$result[1] = array("Wales" , "North", "Wales" , "Nefyn");
$result[2] = array( "Spain" , "Costa del Sol", "Mijas Costa" , "La Cala de Mijas");
Bu hale getirmek istiyorsun doğrumudur?
hocam print_r çektiğimde sonuç aşağıdaki gibi geliyor.
Array ( [1] => Array ( [0] => Wales >North Wales>Nefyn ) [2] => Array ( [0] => Spain >Costa del Sol>Mijas Costa>La Cala de Mijas) )
istediğim şu şekilde değiştirmek bu yapıyı
Array ( [1] => Array ( [0] => Wales [1] => North Wales [2] =>Nefyn ) [2] => Array ( [0] => Spain [1] => Costa del Sol [2] => Mijas Costa [3] => La Cala de Mijas ) )
array [1] ve [2] veritabanından gelen id bölüp tekrar aynı id nin altına sokmak istiyorum.
Array ( [1] => Array ( [0] => Wales >North Wales>Nefyn ) [2] => Array ( [0] => Spain >Costa del Sol>Mijas Costa>La Cala de Mijas) )
Hocam yukarıdaki verdiğim kod bu örnekle çalışması lazım. Şöyle anlatayım. Dizinin ilk elemanı "Wales >North Wales>Nefyn "
İlk önce bunu ">" karakterine göre parçalıyoruz;
$array1 = explode(">", $results[0]);
//$array1 = array("Wales" , "North", "Wales" , "Nefyn"); array1 in içeriği
Daha sonra dizinin ikinci elemanına da aynı işlemi uyguluyoruz,
$array2 = explode(">", $results[1]);
//$array2 = array( "Spain" , "Costa del Sol", "Mijas Costa" , "La Cala de Mijas"); Array2 nin içeriği
Şimdi sırasıyla array1 ve array2 aşağıdaki gibi oldu.
[1] => Array ( [0] => Wales [1] => North Wales [2] =>Nefyn )
[2] => Array ( [0] => Spain [1] => Costa del Sol [2] => Mijas Costa [3] => La Cala de Mijas )
Şimdi bunları tekrardan results array'ının ilk ve ikinci elemanına atamamız lazım. Dolayısı ile;
$results[0] = $array1;
$results[1] = $array2;
-
dikkatli yapınca oldu hocam. fakat şimdi şöyle bir problem oldu bu arraylardan 45bin kadar var :)
foreachin içinde kullanmama da yardım edebilirmisin hocam.
başka türlü bu kadar satırı birleştiremem sanırım.
verdiğim arrayları aşağıdaki kod oluşturuyor.
foreach ($id as $ida => $key) {
$result[$key] = array($breadcrumb[$ida]);
}
böyle yaptığımda ilkini istediğim gibi yapıyor ama ikinci boş geliyor.
foreach ($id as $ida => $key) {
$result[$key] = array($breadcrumb[$ida]);
$array[$key] = explode(">", $result[$key][$ida]);
$result[$key] = $array[$key];
}
homca kafam davul gibi oldu inan 1+1 kaç diye sorsalar söyleyemeyecek durumdayım ne yaptığımı biliyorum ama bilinçli yazmıyorum şuan kodları. yardımın için çok teşekkür ederim.
-
Rica ederim hocam :) Sana zahmet olmazsa tablo yapısının ilgili kısmı ve örnek birkaç data verebilir misin? Tablo yapısı ve datayı bilmeden biraz zorlanıyorum bende.
-
Tekrardan teşekkür ederim hocam.
veritabanı şu şekilde
id breadcrumb
1 Wales >North Wales>Nefyn
2 Spain >Costa del Sol>Mijas Costa>La Cala de Mijas... 50 bine kadar bu şekilde gidiyor.
aşağıdaki gibi çekiyorum
$veri = mysql_query("select id,breadcrumb from ic ORDER BY id ASC LIMIT 2");
while($all= mysql_fetch_assoc($veri))
{$breadcrumb[]=$all["breadcrumb"];
$id[]=$all["id"];
}
ardından bunu kullanıyorum
foreach ($id as $ida => $key) {
$result[$key] = array($breadcrumb[$ida]);
}
print_r ($result); dediğimde id ile breadcrumb verilerini eşleştiriyor. yani bu şekilde sonuç veriyor.
Array ( [1] => Array ( [0] => Wales >North Wales>Nefyn ) [2] => Array ( [0] => Spain >Costa del Sol>Mijas Costa>La Cala de Mijas) )
-
while ($all = mysql_fetch_assoc($veri)) {
/*
$breadcrumb[] = $all["breadcrumb"];
$id[] = $all["id"];
*/
// Verileri id ve breadcrumbs şeklinde iki ayrı diziye atmana gerek yok. Tek seferde aşağıdaki gibi yapabilirsin;
$breadcrumb[$all['id']] = explode(">", $all['breadcrumb']);
}
Birde verileri çekerken eğer hepsini bir kerede göstermen gerekmiyorsa sql sorguna LIMIT eklemeni tavsiye ederim.
-
aercys bunu yazdı
while ($all = mysql_fetch_assoc($veri)) {
/*
$breadcrumb[] = $all["breadcrumb"];
$id[] = $all["id"];
*/
// Verileri id ve breadcrumbs şeklinde iki ayrı diziye atmana gerek yok. Tek seferde aşağıdaki gibi yapabilirsin;
$breadcrumb[$all['id']] = explode(">", $all['breadcrumb']);
}
Birde verileri çekerken eğer hepsini bir kerede göstermen gerekmiyorsa sql sorguna LIMIT eklemeni tavsiye ederim.
Çok teşekkür ederim herşey düzeldi şimdi :) ellerin dert görmesin.