如何在另一个数组中定义没有键的数组?

时间:2017-10-06 20:55:02

标签: php arrays multidimensional-array

标题听起来有点令人困惑,虽然我确信这是一个简单的解决方案。我正在使用json_encode并正在开发一个Web API。 Web API将回显json_encoded的数组。我希望它看起来像这样:

complex1() {
   //do something
}

我试过这个:

{
    {
        "id": "test",
        "reason": "test reason"
    },
    {
        {
        "id": "test2",
        "reason": "test reason2"
    }
}

这仍然有一把钥匙(“”)令人讨厌。我不想要钥匙。我怎样才能解决这个问题?谢谢! :)

3 个答案:

答案 0 :(得分:0)

{
    {
        "id": "test",
        "reason": "test reason"
    },
    {
        {
        "id": "test2",
        "reason": "test reason2"
    }
}

这不可能有充分的理由:在javascript中,花括号表示对象。在一个对象中,每个属性都必须有一个键。另一端的括号表示数字索引数组

php中的数组类型可能令人困惑,因为它是一个多合一的数组,您可以根据需要混合和匹配键。

所以这是有效的JSON,可能是你真正需要的(如果你不关心键,你需要循环遍历值):

[
    {
        "id": "test",
        "reason": "test reason"
    },
    {
        {
        "id": "test2",
        "reason": "test reason2"
    }
]

修改

您可以通过json_encode()在php中创建这样的数组:

$array = [["id"=> "test","reason"=> "test reason"],["id"=> "test","reason"=> "test reason"]];
echo json_encode($array);

答案 1 :(得分:0)

我认为这更符合你的原始代码,你几乎把它钉了

<?php
$array = array();

// create 1st detail entry
$arrayDetail = array();
$arrayDetail["id"] = "test";
$arrayDetail["reason"] = "test reason";

$array[] = $arrayDetail; // add detail to array

// create 2nd detail entry
$arrayDetail = array();
$arrayDetail["id"] = "test";
$arrayDetail["reason"] = "test reason";

$array[] = $arrayDetail; // add detail to array

// show the output
var_dump(json_encode($array, JSON_PRETTY_PRINT)); 

答案 2 :(得分:0)

您可以使用array_push方法获得以下格式,

$array = array();
array_push($array, array('id' => 'test', 'reason' => 'test reason' ) );
echo json_encode($array);

resut将是一个有效的json格式

[{"id":"test","reason":"test reason"}]