PHP - json_encode具有相同值的多个数组

时间:2014-01-02 05:35:43

标签: php json arrays

我需要对三个php数组进行编码,这些数组都具有相同的值。从那里它必须是json_encoded。

Array ( [0] => Title1
        [1] => 320 KB/s 5.0 MB 1:24
        [2] => http://www.example.com/Title1.mp3 )

Array ( [0] => Title2
        [1] => 120 KB/s 2.8 MB 3:29
        [2] => http://www.example.com/Title2.mp3 )

Array ( [0] => Title3
        [1] => 250 KB/s 8.5 MB 4:59
        [2] => http://www.example.com/Title3.mp3 )

json需要是一个json数组,如下例所示。

{
    "result": [
        {
            "link": "http://www.example.com/Title1.mp3",
            "metadata": "320 KB/s 5.0 MB 1:24",
            "title": "Title1"
        },
        {
            "link": "http://www.example.com/Title2.mp3",
            "metadata": "120 KB/s 2.8 MB 3:29",
            "title": "Title2"
        },
        {
            "link": "http://www.example.com/Title3.mp3",
            "metadata": "250 KB/s 8.5 MB 4:59",
            "title": "Title3"
        }
    ]
}

3 个答案:

答案 0 :(得分:1)

为了在JSON中获取值的正确键,您需要在阵列中定义现有的键。像这样的东西会起作用:

$joinedArrays = array($array1, $array2, $array3);

$JSONarray = array();
foreach($joinedArrays as $array){
    $JSONarray[] = array("title" => $array[0], "metadata" => $array[1], 
        "link" => $array[2]);
}

echo json_encode($JSONarray);

首先,您将所有已包含的数组编译到一个数组中,然后在foreach循环中创建一个具有正确键和值的新关联数组,并将其作为新值添加到$JSONarray中从而创建一个多维数组。一旦将所有数组解析为新的关联数组,就可以运行json_encode($JSONarray);来获取以您要求的样式格式化的JSON。

如果您没有先将信息编译成关联数组,那么您将得到一个如下所示的JSON:

[
    result: 
        {
            0:"Title1", 
            1:"320 KB/s 5.0 MB 1:24", 
            2:"http://www.example.com/Title1.mp3"
        },
        {
            0:"Title2", 
            1:"120 KB/s 2.8 MB 3:29", 
            2:"http://www.example.com/Title2.mp3"
        },
        {
            0:"Title3", 
            1:"250 KB/s 8.5 MB 4:59",
            2:"http://www.example.com/Title3.mp3"
        }
]

答案 1 :(得分:0)

您可以将每个数组添加到一个新的多维数组中,如下所示:

$all_data = array();
$all_data[] = $first_array;
$all_data[] = $second_array;
$all_data[] = $third_array;

$json = json_encode($all_data);

答案 2 :(得分:-1)

我尝试了这个,所以我得到了你想要的那个结果json响应

<?php
$arr1[] = array('title'=>'one','value'=>'one');
$arr1[] = array('title'=>'two','value'=>'two');
$arr1[] = array('title'=>'three','value'=>'three');
$arr['result'] = $arr1;

echo '<pre>';print_r(json_encode($arr));