2016-08-25 38 views
0

私はPHPの結果セットを持っており、これらの結果から私はPHPのforeachループを使って値を抽出しています。 foreachループの値を配列$summery[]に設定します。しかし、私は一度にその値を印刷しようとします。私は別々の値/結果セットをjsonコードとして各foreachループごとに必要とするので、私はそれぞれの結果を別々に印刷できます。私のforeachループは次のとおりです。 foreachループからjson_encodeで値を抽出する方法

私の結果は

["69","010116-69","Wr test","01\/01\/16 18:45 PM","planner","Done","01\/01\/16 19:16 PM","68","010116-","This is title","01\/01\/16 18:44 PM","planner","Done"] 

になるが、私は必要

foreach($result_UserWrSet as $UserWrInfo) { 
     $summery[]=$UserWrInfo['wr_id']; 
     $summery[]=$UserWrInfo['wr_number']; 
     $summery[]=$UserWrInfo['wr_title']; 
     $dateFlag=1; 
     $result_StartDate = $WrDates ->getDateById($UserWrInfo['date_id'],$dateFlag); 
     $result_EndDate = $WrDates ->getDateById($UserWrInfo['date_id'],$dateFlag); 
     $summery[]=$result_StartDate; 
     $sql_GetUserName = "SELECT user_name FROM user_information where user_id='$UserWrInfo[user_id]'"; 
     $result_GetUserName = mysqli_query($conn, $sql_GetUserName); 
     $num_GetUserName = mysqli_num_rows($result_GetUserName); 
     if ($num_GetUserName > 0){ 
      $UserNameByIdRos = $result_GetUserName->fetch_assoc(); 
      $UserNameById=$UserNameByIdRos['user_name']; 
     } 
     else {$UserNameById=NULL;} 
     $summery[]=$UserNameById; 
     $result_CurrentHop = $WrDates ->getCurrentHopByWrId($UserWrInfo['wr_id']); 
     $result_CurrentHopName = $WrDates ->GetHopsNameById($result_CurrentHop); 
     $summery[]=$result_CurrentHopName; 
     $result_EndDate = $WrDates ->completedDate($UserWrInfo['wr_id']); 
     $summery[]=$result_EndDate; 
    } 
print json_encode($summery); 
:現在

[["69","010116-69","Wr test","01\/01\/16 18:45 PM","planner","Done"],["01\/01\/16 19:16 PM","68","010116-","This is title","01\/01\/16 18:44 PM","planner","Done"]] 

答えて

1

使用このコードを、あなたは多次元配列を必要とすることにすべての項目

<?php 
$dataArray = array(); /// empty array in which sub array's to be pushed.. 
foreach($result_UserWrSet as $UserWrInfo) { 
     $summery= array(); 
     $summery[]=$UserWrInfo['wr_id']; 
     $summery[]=$UserWrInfo['wr_number']; 
     $summery[]=$UserWrInfo['wr_title']; 
     $dateFlag=1; 
     $result_StartDate = $WrDates ->getDateById($UserWrInfo['date_id'],$dateFlag); 
     $result_EndDate = $WrDates ->getDateById($UserWrInfo['date_id'],$dateFlag); 
     $summery[]=$result_StartDate; 
     $sql_GetUserName = "SELECT user_name FROM user_information where user_id='$UserWrInfo[user_id]'"; 
     $result_GetUserName = mysqli_query($conn, $sql_GetUserName); 
     $num_GetUserName = mysqli_num_rows($result_GetUserName); 
     if ($num_GetUserName > 0){ 
      $UserNameByIdRos = $result_GetUserName->fetch_assoc(); 
      $UserNameById=$UserNameByIdRos['user_name']; 
     } 
     else {$UserNameById=NULL;} 
     $summery[]=$UserNameById; 
     $result_CurrentHop = $WrDates ->getCurrentHopByWrId($UserWrInfo['wr_id']); 
     $result_CurrentHopName = $WrDates ->GetHopsNameById($result_CurrentHop); 
     $summery[]=$result_CurrentHopName; 
     $result_EndDate = $WrDates ->completedDate($UserWrInfo['wr_id']); 
     $summery[]=$result_EndDate; 
     ////Push sub array i.e summary into the main array... 
     $dataArray[] = $summery; 
} 
print json_encode($dataArray); 
?> 
0

、あなただけの1次元配列に新しいアイテムを追加しています。あなたは、このような結果ごとに別々の配列を作成する必要があります。

foreach($result_UserWrSet as $UserWrInfo) { 
    $item = array(); 

    // Change all $summary in the loop to: $item, like this: 
    $item[]=$UserWrInfo['wr_id']; 
    $item[]=$UserWrInfo['wr_number']; 
    $item[]=$UserWrInfo['wr_title']; 

    //...and so on 

    // Then add this last in your loop: 
    $summary[] = $item; 
} 

これは、その後、多次元配列になりメインアレイに置かれ、反復ごとに配列を作成します。

1

を押した後、あなたが従うことができ、すべてのサブ配列のプッシュすべきで別の配列を使用し、その配列をエンコードする必要がありますコードの下:

$result_UserWrSet = array(
'0' => array('wr_id'=>'12','wr_number' =>'785', 'wr_title' => 'title1'), 
'1' => array('wr_id'=>'12','wr_number' =>'785', 'wr_title' => 'title1')); 

foreach($result_UserWrSet as $key => $UserWrInfo) { 
    $summery[$key][]=$UserWrInfo['wr_id']; 
    $summery[$key][]=$UserWrInfo['wr_number']; 
    $summery[$key][]=$UserWrInfo['wr_title']; 
} 

print json_encode($summery); 
output: [["12","785","title1"],["12","785","title1"]] 

グッドラック:)

関連する問題