2012-03-06 2 views
-2

Привет Я новичок в php, и я не знаю, как я могу это сделать?Как закодировать Json Array в php?

У меня есть четыре строки в моей базе данных, и я хочу кодировать массив Json из этих строк, используя php, как я могу это сделать.

ниже мой код, пожалуйста, смотрите в это и дать мне suggestion--

<html> 
<head> 
<title>First</title> 
<body> 
<?php 
$con = mysql_connect("localhost","root"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("ContactDB", $con); 

$result = mysql_query("SELECT * FROM mycontacts"); 

echo "<table border='1'> 
<tr> 
<th>PhoneNumber</th> 
<th>Name</th> 
<th>Lastname</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) 
    { 
    $data=array("PhoneNumber"=>$row['PhoneNumber'],"Name"=>$row['Name']); 
print_r (json_encode(array_chunk($data, 1, true))); 
} 


mysql_close($con); 
?> 

</body> 
</head> 
</html> 

я получаю ответ, как этот

[{ "PhoneNumber": "1234567"}, { "Name ":" Ujjwal "}] [{" PhoneNumber ":" 765423 "}, {" Name ":" ABC "}] [{" PhoneNumber ":" 098765123 "}, {" Name ":" A "}]

, но я хочу его в этом формате

[{ "PhoneNumber": "1234567", "Name": "X"}, { "PhoneNumber": "765423", "Имя": "ABC"}, { "PhoneNumber": "098765123", "Имя": "A"}]

+0

возможно дубликат [функции Opendir дает мне несколько массивов вместо одного] (http://stackoverflow.com/questions/9341025/opendir-function-gives-me-multiple-arrays-instead-of- just-one) – mario

ответ

1

Заменить

while($row = mysql_fetch_array($result)) 
{ 
    $data=array("PhoneNumber"=>$row['PhoneNumber'],"Name"=>$row['Name']); 
    print_r (json_encode(array_chunk($data, 1, true))); 
} 

с

$data = array(); 
while($row = mysql_fetch_array($result)) 
{ 
    $data[] = array("PhoneNumber"=>$row['PhoneNumber'],"Name"=>$row['Name']); 
} 
print_r (json_encode($data)); 
+0

Спасибо, теперь он работает правильно .. – user03

0

Dont использовать array_chunk

json_encode ($ данные).

Вы также можете объявить данные в виде массива до петли, а затем пользователь $ данных [] = json_encode (.....)

0

Попробуйте заменить

$data= array("PhoneNumber"=>$row['PhoneNumber'],"Name"=>$row['Name']); 

с

$data= (object) array("PhoneNumber"=>$row['PhoneNumber'],"Name"=>$row['Name']); 
0

Пример того, как сделать это ниже. Могу ли я также предложить использовать AS в запросе MySQL (и избегать *; просто получите нужные данные).

$q = mysql_query("SELECT ... AS ... ..."); 
$rows = array(); 
while($r = mysql_fetch_assoc($q)) { 
    $rows[] = $r; 
} 
print json_encode($rows); 
Смежные вопросы