Parse error: syntax error
3
●142
- 19-02-2023, 23:44:57Yeşil olarak işaretlenen alanda, fonksiyon çağrısını doğrudan bir dizi elemanının anahtarındaki değer olarak kullanıyorsunuz. Bu, PHP'nin dil yapısına uymadığından syntax hatası alıyorsunuz. Bunun yerine, db_connection() fonksiyonunu önce bir değişkene atayarak bağlantıyı alın ve sonra özellik veya yöntem çağırmak için bu değişkeni kullanın:
$connection = db_connection(); $rowValues = array_map( function($value) use ($connection) { return $connection[':query']->quote($value); }, $rowValues );Bu şekilde, db_connection() fonksiyonu yalnızca bir kez çağrılacak ve bağlantıyı değişkende saklayacaksınız. Daha sonra, özellik veya yöntem çağrısı sırasında bu değişkeni kullanabilirsiniz. - 19-02-2023, 23:51:51Doğ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?ardakarakas adlı üyeden alıntı: mesajı görüntüle
- 19-02-2023, 23:55:04Evet, 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.AKSOYOGLU adlı üyeden alıntı: mesajı görüntüle
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.