v2.5.2
Giriş yap

Dizi içinden ad soyad birleştirme

rephp7
650 defa görüntülendi ve 1 kişi tarafından değerlendirildi
<input type="text" class="form-control" name="adi[]">
<input type="text" class="form-control" name="soyadi[]">

 $adi = $_POST["adi"];
 $soyadi = $_POST["soyadi"];
 
    $y = 0;
    if (!empty($_POST["adi"])) {

      foreach ($adi as $key => $value) {
        $y_adi = $value;
        $y_soyadi = $soyadi[$key];
        
      // $y_yazar = $y_adi . ' ' . $y_soyadi; 
      
       //insert fonksiyonum burada..! 
       //("INSERT INTO yazarlar ...
      //   ....);
    $y++;
       
       }

Dizi içinden indisine göre ad, soyad inputlarını nasıl birleştiririm?

$y_yazar = $y_adi . ' ' . $y_soyadi; Bu şekilde yaptım sadece 1. yazarın adı soyadı birleşti ve öylece insert etti, diğer yazarlar insert olmadı.

Birde tüm yazar adlarını dizinden alıp virgül ile birleştirmem lazım.
Ali Kaya, Veli Toprak, Ahmet Su şeklinde başka bir tabloya yollamak için lazım.

Dizi elemanlarını tekrardan foreach alıp implode mi yapmalıyım? nasıl yapacağımı çözemedim.

Cevap yaz
Cevaplar (10)
munzevi
961 gün önce
foreach ($adi as $key => $value) {
    $yazar[] = $value.' '.$soyadi[$key];
}
$projeyazarlari = implode(', ', $yazar);

mübarek sen beni çok yordun ya. biraz daha temele inip, syntaxı anlamaya çalışmanı tavsiye ederim. birde soru sorarkende sakin kal, başlık içerikle çok alakalı değil teknikte değil. kaç kere cevapta yazıldı, çözümede ulaşamadık. sence çözüme ulaşılması bu kadar zor bir şey mi sordun? hayır tabi. pratiğe geçmeden, biraz daha teoride bilgilerini pekiştir.

rephp7
961 gün önce

$yazar[] yapınca adsoyadı doğru birleştirmiyor onun yerine tabloya direk "Array" yazıyordu. O yüzden işin içinden çıkamamıştım.
Bende $projeyazarları için $yazark[] yazıp implode için $yazark 'yi kullandım. bu şekilde işimi gördü.

foreach ($adi as $key => $value) {
    $yazar = $value.' '.$soyadi[$key];
    $yazark[] = $value.' '.$soyadi[$key];
}
$projeyazarlari = implode(', ', $yazark);

Destek için tekrar teşekkürler @munzevi.

rephp7
961 gün önce

@munzevi hocam, işin içinden çıkamadım. Kodlarım aşağıda düzeltmeniz mümkün mü?

if ($_POST) {

      $i = 0;
      if (!empty($_POST["adi"])) {

        $adi = $_POST["adi"];
        $soyadi = $_POST["soyadi"];
        $yazar=array();
        $yazar_sira = $_POST["yazar_sira"];

            foreach ($adi as $key => $value) {
              $y_adi = $value;
              $y_soyadi = $soyadi[$key];
              $y_sira = $yazar_sira[$key];
    
              $yazar=$value.' '.$soyadi[$key];
    
              $islem = ......
                "INSERT INTO yazarlar",
               .........
              );
              $i++;
            };

        $projeyazarlari[]= implode(', ', $yazar);

        $islem = .....
          "INSERT INTO proje",
            ..........
            
      } else {
        echo "yazar adı yok!";  };
munzevi
961 gün önce

döngü bitince implode'yi kullan

$yazar=$value.' '.$soyadi[$key]; bu dizi değil, değişken olarak tanımlanıyor

$yazar[] = şeklinde olmalı

rephp7
961 gün önce
$yazar=array();

 foreach ($adi as $key => $value) {
  $y_adi = $value;
  $y_soyadi = $soyadi[$key];
  $y_sira = $yazar_sira[$key];
  
  $yazar=$value.' '.$soyadi[$key];
  $projeyazarlari= implode(', ', $yazar);
  ....

$projeyazarlari için şu hata mesajını veriyor.
Hata mesajı: Expected type 'null|array'. Found 'string'.intelephense(1006)

foreach dışında alınca da Warning: implode(): Invalid arguments passed in ... hatası veriyor.

munzevi
962 gün önce
$sonuc = implode(', ', $adsoyad);
echo $sonuc;

bunun için implode kullanman gerek, dizileri birleştirir.

rephp7
963 gün önce

inputlarım bunlar:

<input type="text" class="form-control" name="adi[]">
<input type="text" class="form-control" name="soyadi[]">

Dizi:
["adi"]=>
  array(3) {
    [0]=>  string(3) "Ali"
    [1]=>  string(4) "Veli"
    [2]=>  string(4) "Zeki"
  }
  ["soyadi"]=>
  array(3) { 
    [0]=> string(4) "Kaya"
    [1]=> string(6) "Toprak"
    [2]=> string(2) "Su"
  }

İstediğim ek çıktılar:
$adsoyad: bunu verdiğiniz kod ile ad soyad birleştirerek istediğimi aldım.
Ali Kaya
Veli Toprak
Zeki Su.

Birde
$projeyazarı olarak: "Kaya Ali, Veli Toprak, Zeki Su"
şeklinde virgül ile birleştirilmiş halde çıktı almak istiyorum.

Yazarlar tablosu:

Yazaradisoyadi
Ali KayaAliKaya
Veli ToprakVeliToprak

Projeler tablosu:

Proje Noprojeyazari
0012523Kaya Ali, Veli Toprak, Zeki Su
munzevi
963 gün önce

anlamadım. birleştirmek istediğin dizinin örneği ile birlikte yazarsan, daha iyi olur.

rephp7
963 gün önce

teşekkürler @munzevi,
peki tüm adsoyadları şu şekilde nasıl birleştirebilirim?
ali k, ceren b, eren e,

munzevi
965 gün önce
$arr = [
    0 => ["ad" => "ali", "soyad" => "k"],
    1 => ["ad" => "ceren", "soyad" => "b"],
    2 => ["ad" => "eren", "soyad" => "e"],
    3 => ["ad" => "erdem", "soyad" => "a"],
    4 => ["ad" => "burak", "soyad" => "s"],
    5 => ["ad" => "uğur", "soyad" => "u"],
];
$adSoyad = array();
foreach($arr as $key => $value){
    $adSoyad[] = $value["ad"]." ".$value["soyad"];
}
print_r($adSoyad);