2017-10-08 93 views
1

它我的PHP代碼:定製雖然在JSON數組

$res_media=mysql_query("SELECT * FROM mv_media"); 
$media = array(); 
while($resualt_media = mysql_fetch_assoc($res_media)) { 
    $media[]= $resualt_media['title']; 
} 
echo $media; 

及其我的輸出:

["Test","Test","Test","Test","Test"] 

我想將其更改爲以下格式:

["Test"],["Test"],["Test"],["Test"],["Test"] 

我改變了我此代碼的代碼:

$res_media=mysql_query("SELECT * FROM mv_media"); 
$media = array(); 
    while($resualt_media = mysql_fetch_assoc($res_media)) { 
    $media[]= [$resualt_media['title']]; 
} 
echo $media; 

現在我的輸出:

[["Test","Test","Test","Test","Test"]] 

但我需要這個自定義輸出:

[["Test"],["Test"],["Test"],["Test"],["Test"],["ItsMyCustomChild"]] 

我想添加自定義子與出庫!

+0

請使用mysqli或PDO代替數據庫連接。當您切換到7.0或更高版本時,您的代碼將無法工作 – jens1o

+0

我知道,但它可以,不用擔心 –

回答

0

您可以將$media[] = [<value>]更改爲$media[][] = <value>並且它可以工作,因爲您將在數組內創建一個新數組。

+0

如何在數組中創建新數組並幫助我? –

+0

如何在處理後爲自己的$媒體添加自定義字段? –

+0

就像你在while循環中做的一樣,但只是在它之外。 – jens1o

0

我建議這種做法:

<?php 
$input = json_decode('["Test","Test","Test","Test","Test"]'); 
$output = []; 

array_walk($input, function($element) use (&$output) { 
    $output[] = [$element]; 
}); 

var_dump(json_encode($output)); 

或者這可以簡化爲:

<?php 
$data = json_decode('["Test","Test","Test","Test","Test"]'); 

array_walk($data, function(&$element) { 
    $element = [$element]; 
}); 

var_dump(json_encode($data)); 

創建的陣列結構顯然是:

Array 
(
    [0] => Array 
     (
      [0] => Test 
     ) 

    [1] => Array 
     (
      [0] => Test 
     ) 

    [2] => Array 
     (
      [0] => Test 
     ) 

    [3] => Array 
     (
      [0] => Test 
     ) 

    [4] => Array 
     (
      [0] => Test 
     ) 
) 

其中,如果您它再次json_encode()它,結果在所需的格式:

string(46) "[["Test"],["Test"],["Test"],["Test"],["Test"]]" 

您實際處理的具體問題與創建所需結構並非如此,而是您嘗試修改JSON字符串而不是您想要使用的實際數組。這就是最初使用json_decode()的原因。

0
$res_media=mysql_query("SELECT * FROM mv_media"); 
$media = array(); 
    while($resualt_media = mysql_fetch_assoc($res_media)) { 
    array_push($media,array($resualt_media['title'])); 
} 
print_r $media; 
0

你只需要改變下面的行。你會得到你想要的結果。

$media[][]= $resualt_media['title']; 

如果你想看看你得到什麼。你需要在這段時間之後添加json_encode()。 like below

echo json_encode($media);