2017-04-19 5 views
1

API JSON出力に関する問題があります。ループ中にJSON出力にぶつかって、配列形式を強制的にインデックス配列に変更しようとしているときに、独自のインデックスを作成しています。PHPのオブジェクトでJSON配列の出力を変更する方法は?

PHPコード:私は0,1,2,3その配列が独自に作っているのないような応答をしたい

{ 
    "message": "success", 
    "0": { 
    "Hello": { 
     "name": "harjot", 
     "fname": "tejinder", 
     "address": "noida" 
    } 
    }, 
    "1": { 
    "Hello": { 
     "name": "regret", 
     "fname": "egegrregeger", 
     "address": "gegreg" 
    } 
    }, 
    "2": { 
    "Hello": { 
     "name": "harjot1", 
     "fname": "harjot2", 
     "address": "noida" 
    } 
    }, 
    "3": { 
    "Hello": { 
     "name": "har", 
     "fname": "har1", 
     "address": "Punjab" 
    } 
    } 
} 

$sql = "SELECT name,fname,address FROM user_management"; 
$array = array(); 

$result = $conn->query($sql); 
$i=1; 

if ($result->num_rows > 0) { 
    // output data of each row 
    $array=["message"=>"success"]; 
    while($row = $result->fetch_assoc()) { 

    $array[] = ["Hello" => $row]; 

} 

} 
else 
{ 
    echo "0 results"; 
} 
//echo implode(',', $array); 
// Take output array glue it with the 
echo json_encode($array); 
$conn->close(); 
?> 

は私のように応答を取得しています。配列のインデックスにアクセスする方法はありますか?

予想される出力:

{ "message": "success", 
    "Hello": { 
     "name": "harjot", 
     "fname": "tejinder", 
     "address": "noida" }, 
    "Hello1": { 
     "name": "regret", 
     "fname": "egegrregeger", 
     "address": "gegreg" }, 
    "Hello2": { 
     "name": "harjot1", 
     "fname": "harjot2", 
     "address": "noida" }, 
    "Hello3": { 
     "name": "har", 
     "fname": "har1", 
     "address": "Punjab" 
    } 
} 
+0

変更してみてください。$ i] = $ row; ' – Gaurav

+0

出力は変更されますが、引き続きアレイのキーに0,1,2,3のインデックスが割り当てられます。それらを削除するには? –

+0

あなたのコードをスクリーンショットに表示します。 – Gaurav

答えて

1

あなたはカウンターを維持するため$iの宣言を持っていたが、あなたはそれを使用していませんでした。

変更この:

$array[] = ["Hello" => $row]; 

この:

$array["Hello".$i] = $row; 

また、カウンタ値を維持し、高めるための$i++;を追加します。

PHPコード:

<?php // 
$sql = "SELECT name,fname,address FROM user_management"; 
$array = array(); 

$result = $conn->query($sql); 
$i=1; 

if ($result->num_rows > 0) { 
    // output data of each row 
    $array=["message"=>"success"]; 
    while($row = $result->fetch_assoc()) { 

    $array["Hello".$i] = $row;//added line here 
    $i++;//added this line to increment counter everytime. 
} 

} 
else 
{ 
    echo "0 results"; 
} 
//echo implode(',', $array); 
// Take output array glue it with the 
echo json_encode($array); 
$conn->close(); 
?> 
+1

ありがとうございます。驚くばかり! –

+1

@HarjotSinghPanesar Welcomee .... :) –

1

はこれを試してみてください。 "こんにちは" $配列[ `へ`;

$i = 0; 
while($row = $result->fetch_assoc()) { 

    $array["Hello".$i++] = $row; 

} 

OR

$i = 0; 
while($row = $result->fetch_assoc()) { 

    $array["Hello".$i] = $row; 
    $i++; 
} 
+1

ありがとうございました、もう一度恐ろしい! –

0

$配列[] = [ "こんにちは" => $行] `からこの

if ($result->num_rows > 0) { 
    // output data of each row 
    $array=["message"=>"success"]; 
    $index = ""; 
    while($row = $result->fetch_assoc()) { 
     $array["Hello" . $index] = $row; 
     $index = $index ? ($index + 1) : 1; 
    } 
} 
関連する問題