ホームページ > バックエンド開発 > PHPチュートリアル > php配列をjsonに変換するときに問題が発生しました。ぜひご覧ください。

php配列をjsonに変換するときに問題が発生しました。ぜひご覧ください。

WBOY
リリース: 2016-06-23 13:44:20
オリジナル
984 人が閲覧しました


図に示すように:


次の文は何も出力されないのはなぜですか?

echo json_encode($result);#输出结果
ログイン後にコピー

個人的には、$data の配列要素が Client オブジェクトであり、それを JSON に変換するときに問題が発生したのではないかと考えています。しかし、何が問題なのか、どのように変換すればよいのかわかりません。それとも他の変換方法があるのでしょうか?
class Result {		var $state;		var $data = array();	}
ログイン後にコピー

完全なコード:
$start = 0;	$end = 2;	$uid = 1;	$result = new Result();	$result_set = getClients($start, $end, $uid);	$data = array();	$count = 0;		while($row = mysql_fetch_array($result_set)) {		$client = new Client();		$client->cid = $row['id'];		$client->gender = $row['gender'];		$client->rank = $row['rank'];		$client->name = $row['name'];		$client->phoneNum = $row['phoneNum'];		$client->email = $row['email'];		$client->address = $row['address'];		$result->data[$count] = $client;		echo $result->data[$count]->cid."  ";		echo $result->data[$count]->gender."  ";		echo $result->data[$count]->rank."  ";		echo $result->data[$count]->name."  ";		echo $result->data[$count]->phoneNum."  ";		echo $result->data[$count]->address."\n";		$count++;    }	if(count($data) > 0) {		$result->state = 0;	} else {		$result->state = 1;	}		echo json_encode($result);#输出结果	class Result {		var $state;		var $data = array();	}
ログイン後にコピー

出力結果:
---------- debug php ----------Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\WWW\wsd\trunk\src\server\api\db\init_db.php on line 10Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\WWW\wsd\trunk\src\server\api\db\init_db.php on line 103  0  经理  张小莉  18825044888  广东省广州市天河区4  0  主管  吴美凤  18576430777  广东省深圳市南山区蛇口南海大道1079号PHP Deprecated:  mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\WWW\wsd\trunk\src\server\api\db\init_db.php on line 10PHP Deprecated:  mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\WWW\wsd\trunk\src\server\api\db\init_db.php on line 10Output completed (0 sec consumed) - Normal Termination
ログイン後にコピー


次の形式に似た出力があるはずです:
{"state":1,"data":[           {"cid":3,          "gender":0,          "rank":"经理"          "name":" 张小莉"          "phoneNum":"18825044888  "          "address":"广东省广州市天河区"},          {"cid":4,          "gender":0,          "rank":"主管"          "name":" 吴美凤"          "phoneNum":"18576430777  "          "address":" 广东省深圳市南山区蛇口南海大道1079号"}          ]}
ログイン後にコピー


何が問題ですか?どうやって対処すればいいのでしょうか?ありがとう!





ディスカッションへの返信 (解決策)

print_r($result)
何が表示されますか?

$result はオブジェクトからのもので、出力は間違っています:
キャッチ可能な致命的なエラー: クラス Result のオブジェクトを D:WWWwsdtrunksrcserverapigetClients.php の 44 行目の文字列に変換できませんでした

クラス Result のオブジェクトをに変換できませんでしたstring オブジェクトは文字列に変換できません
この場合、もちろん json にすることはできません
クライアント クラスの定義を見てください

値がない可能性があります

エンコーディングの問題、json_encode() は utf- でのみ有効です8 データベーステーブルの作成時にテーブルのエンコーディングを utf-8 に設定します。次のように、データベースに接続するときにエンコーディングを設定します。
function connect_host() {
$host = "127.0.0.1"; "root";
$password_db = "wsd_db";
$con = mysql_connect($host, $name_db, $password_db) {
echo "ホストに接続します失敗しました"。 mysql_error();
return;
}
mysql_select_db($name_tb, $con);
mysql_query("SET NAMES UTF8");#utf-8 エンコーディングを設定
return $con;
}

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート