定制虽然在JSON数组

问题描述:

它我的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

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

您可以将$media[] = [<value>]更改为$media[][] = <value>并且它可以工作,因为您将在数组内创建一个新数组。

+0

如何在数组中创建新数组并帮助我? –

+0

如何在处理后为自己的$媒体添加自定义字段? –

+0

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

我建议这种做法:

<?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()的原因。

$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; 

你只需要改变下面的行。你会得到你想要的结果。

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

如果你想看看你得到什么。你需要在这段时间之后添加json_encode()。 like below

echo json_encode($media);