AKSOYOGLU adlı üyeden alıntı: mesajı görüntüle
Doğru hocam değişkene atarak kullanım sağlanabiliyor. Benim istediğim şekilde kullanım sağlamam PHP yapısı içerisinde mümkün değil sanıyorum. Doğru mu anlıyorum?
Evet, doğru anlamışsınız. PHP dil yapısı içinde, bir dizi elemanının anahtarında doğrudan bir fonksiyon çağıramazsınız. Bu şekilde çağrı yapmak bir syntax hatasıdır.
Ancak, örneğin PHP 7.4 ve sonraki sürümlerde, fonksiyon çağırmak için dizelerde anahtar değişkenleri kullanma özelliği olan "daha esnek anahtarlar" (flexible keys) tanıtılmıştır. Bu özellik, bir dizi elemanının anahtarına bir ifade vererek, o ifadenin değerinin anahtar olarak kullanılmasına izin verir. Bu özellik sayesinde, bir fonksiyon çağırabilirsiniz:

$rowValues = array_map(
  function($value) {
    return db_connection()[':query']->quote($value);
  },
  array_combine(
    array_map(fn($v) => ":{$v}", range(1, count($rowValues))),
    $rowValues
  )
);
Bu kodda, array_combine() işlevi kullanılarak $rowValues dizisine sıfırdan başlayan bir dizi anahtar atanır. Dizinin anahtarları "1", "2", "3", vb. olarak belirlenir ve bu anahtarların önüne ":" karakteri eklenerek yeni bir dizi oluşturulur. Bu yeni anahtarlar, $rowValues dizisindeki değerlerle birleştirilir ve bu, array_map() işlevinin ikinci parametresi olarak kullanılır. array_map() işlevi, her bir $rowValues değeri için db_connection()[':query']->quote() işlemini uygular ve sonuçlar yeni bir diziye yerleştirilir.