2017-06-30 20 views
2

1つのPHPでいくつかのmySQLクエリを結合し、すべてを1つのJSONオブジェクトにプッシュしようとしています。配列を配列に入れてからencodeする - PHP

だから、私はこのような...最初のクエリで始めている:

$data=[]; 

$response = $stmt->fetchAll(PDO::FETCH_ASSOC); 
$final_count = count($response); 
$data['count'] = $final_count; 

私はその後、echo json_encode($data);をすれば、私が得るようにきれいにフォーマットされたオブジェクト:私は2番目のを持っている{"count":61}

私はそうのように、ループを通して結果を置くクエリ:

012:

$response = $stmt->fetchAll(PDO::FETCH_ASSOC); 
$items = array(); 
foreach ($response as &$value) { 
    $items[] = $value['date_added']; 
} 
echo json_encode($items); 

そして私は日付の私の素敵なセットを取得します

["2017-06-24 00:08:58","2017-06-26 15:01:48","2017-06-27 15:01:48","2017-06-28 23:19:41","2017-06-29 01:38:07","2017-06-30 00:08:58"] 

は、ここで私はそうのように一緒にすべてのバックこれを得るのですか、質問です:あなたはすべてのあなたの収集したデータのarray_mergeを使用することができますもちろん

{ 
    "count": 61, 
    "dates": [ 
     "2017-06-24 00:08:58", 
     "2017-06-26 15:01:48", 
     "2017-06-27 15:01:48", 
     "2017-06-28 23:19:41", 
     "2017-06-29 01:38:07", 
     "2017-06-30 00:08:58" 
    ] 
} 
+0

使用 'その後、 – ThisGuyHasTwoThumbs

+0

ちょうど現在、次の2つの別々の配列を使用すると、同じアレイにエントリを置く:)エンコードarray_merge'を使用することができます。 – arkascha

答えて

4

あなたは

$myData['count'] = $final_count; 
$myData['dates'] = $items 
echo json_encode($myData); 
4
$data=[]; 

$response = $stmt->fetchAll(PDO::FETCH_ASSOC); 
$final_count = count($response); 
// first store count in `$data` 
$data['count'] = $final_count; 

$data['dates'] = []; 
$response = $stmt->fetchAll(PDO::FETCH_ASSOC); 
// next, store dates in subarray of `$data` 
foreach ($response as &$value) { 
    $data['dates'][] = $value['date_added']; 
} 

// finally encode everything 
echo json_encode($data); 
+0

パーフェクト。ありがとう。サブアレイのことは、私が見逃していたことです...それは事であることさえ知りませんでした。 :) – jonmrich

2

または:

$data=[]; 
// get $final_count 
$data['count'] = $final_count; 
// ... do some more stuff 
// load items from db 
$data['dates'] = $items; 

echo json_encode($data); 
+0

まあ、それは単純だった...それではなかった。ありがとう! – jonmrich

+1

しかし、私は十分に速くはありませんでした。 – BenRoob

関連する問題