PHP Dizileri Anahtar-Değer ile String İfadeye Dönüştürmek
Bu işleme neden lazım olunur önce onu anlamak lazım. Ben mesela veritabanı sınıfı yazarken şöyle bir kullanım yapıyordum;
$params = [
'ORDER BY' => 'date DESC',
'LIMIT' => '0, 10'
];
Database::select('messages', $params)
Ve kolay kullanabilmem içinde anahtar-değer olan dizilerimi birleştirip bir stringe dönüştürmem gerekiyordu. Yani yukarının sonucunda şöyle bir sql kodum olmalı;
SELECT * FROM messages ORDER BY date DESC LIMIT 0, 10
Bunuda en kolay şu şekilde yaptım;
$params = [
'ORDER BY' => 'date DESC',
'GROUP BY' => 'date',
'LIMIT' => '0, 15'
];
array_walk($params, function(&$i, $k){
$i = "$k $i";
});
$sql = implode(' ', $params);
echo $sql; // Çıktı: ORDER BY date DESC GROUP BY date LIMIT 0, 15
foreach'e sokup bir değişene atayıp onu kullanmak yerine, dizi fonksiyonlarından biri olan array_walk()
fonksiyonunu kullandık. Ve anonim fonksiyon içerisinde anahtarımızı anahtar değer şeklinde eşitledik. Dizi implode()
ile birleştirip istediğimiz sonucu aldık.