2016-04-07 19 views
4

biçiminde json'a yazdırmanız gerekir. Php kullanarak mysql verilerini jp kullanarak almayı ve daha sonra URL'ye erişmeyi deniyorum. Json'da veri alıyorum ama bir formatta ihtiyacım var. Aşağıda json almak için benim php kodu.Mysql verilerini

header('Content-Type: application/json'); 
include('dbhconfig.inc.php'); 

$response = array(); 

$stmt = $dbh->prepare("SELECT * FROM venderlist"); 
$stmt->execute(); 
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
{ 
    $response['results'] = $rows; 
    } 
echo json_encode($response); 

Ve json veri

{"results":[{"id":"1","vendname":"Genie Events","address":"15, Lower Ground Floor, Lajpat Nagar, Delhi - 110024, Near National Park ","contact":"(91)-11-33437065","contact_o":"(91)-11-40666522","est":"2010","website":"www.genieevents.com","email":"","zip":"110024","latitude":"1.28525","longitude":"103.775464","latlon":"1.28525,103.775464","type":"organisers"}, 

Öncelikle onun düzgün yapıda görünmeyen feryat olarak gösteren. Ve şu anda latlon "latlon":"1.28525,103.775464" gibi gösteriyor ama sonuç istiyorum "latlon":[1.28525,103.775464]

Json değişken adı latlon'a [] nasıl eklenir.

cevap

4

Elbette, bir dizenin başlangıcından önce verinin o kısmını parçalamak zorunda kalacaksınız. Bunları, her iki float değerine sahip bir dizi birimi olarak ayarlamanız gerekir.

Hepsini getirdikten sonra, biraz işlem yapmanız gerekir.

explode dizesini bu dize üzerinde ilk olarak , ile kullanabilirsiniz. Yani bu bir dizi [] olur. Ama burada bitmiyor, patlatılmış elemanlar hala dizgiler, yaniile tüm öğeleri arrray_map ile eşleştirebilirsiniz.

Yani sonuçta, sadece şu şekilde görünecektir:

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
foreach($rows as &$r) { // with reference 
    // explode with comma, map with floatval 
    $r['latlon'] = array_map('floatval', explode(',', $r['latlon'])); 
} 
echo json_encode(array('results' => $rows)); // json encode 
+1

Ben de aynı şeyi düşünüyordum. Bunun gibi bir satırda yapabileceğinizi düşünüyorum: echo json_encode (array ('results' => array_map (function ($ row) {return dizi_map ('floatval', '(', '$ row [' latlon '])));}, $ satırlar))); ' – Ohgodwhy

+1

@Ohgodwhy haha, bir liner dizisi, her zaman bir – Ghost

+0

işleminizin başarısıdır. Teşekkür ederim. İstediğimi aldım. –