使用相同的键为多行创建一个PHP数组到json_encode

时间:2015-08-07 12:09:30

标签: php arrays json wordpress

在wordpress中,我调用了一个WP_Query。对于找到的每个帖子,我将一个键+值行添加到PHP数组中。

$array[$key] = $value;

键是一个时间戳,值是一个字符串。这就是问题所在。为了使用jQuery日历,我需要获得一个JSON对象,如下所示:

var codropsEvents = {
'11-23-2015' : 'text',
'11-23-2015' : 'text two',
'11-20-2015' : 'some other text',
'11-19-2015' : 'Anything that is text'
};

为此,json_encode()函数几乎可以正常工作。

问题是,PHP不允许在多行中使用相同的密钥:如果我有多个具有相同时间戳(wp元值)的帖子,PHP只会在数组中存储一个。

因此,我的日历每天只显示一个帖子。

如何组织我的PHP数组以获得JSON对象的良好格式?

** /!\ UPDATE /!\ **

事实上,我不需要使用相同密钥的多行。对于具有相同时间戳的每个帖子,我需要创建一个具有唯一键(时间戳)的行和一个唯一值,该值将是包含所有帖子标题的字符串。

希望我明白。

5 个答案:

答案 0 :(得分:1)

几个月前做过类似的工作,我解决了如下问题。如何在像这样的关联数组中获取数据

Feature: Dummy feature

  Scenario: Home url
    Given I am on "/backend"
    Then I should see "Welcome to Application backend!"
    And I can access service container
      │ ThisTokenIsNotSoSecretChangeIt

1 scenario (1 passed)
3 steps (3 passed)
0m0.98s (28.17Mb)

您最后编辑后的更新:您只需要这个数组关联结构,json_encode将完成其余的工作

答案 1 :(得分:1)

你提供的json也不像你要求的那样工作。对于给定的键,它也只能有一个值,所以它最终会像PHP的数组一样。您需要创建值(字符串)数组而不是字符串:

{"11-23-2015":["text","text two"]}

答案 2 :(得分:0)

为什么不尝试下面这样的例子,不确定它是否符合你的要求,但我希望:)

$array = array('12', '13', '14');
$array2 = array('test', 'testing1', 'tetst23', 'testing4');
$newarray = array();
foreach ($array as $key => $value) {
    foreach ($array2 as $eacharray) {
        $newarray[$value][] = $eacharray;
    }
}

var_dump(json_encode($newarray));

<强>输出:

{"12":["test","testing1","tetst23","testing4"],"13":["test","testing1","tetst23","testing4"],"14":["test","testing1","tetst23","testing4"]}

答案 3 :(得分:0)

我会尝试这样的事情。

ACCESS_URL

答案 4 :(得分:-1)

您所遇到的问题在于,您尝试生成的数组格式在PHP,JavScript或JSON中都无效。实际上,您在问题中引用的代码作为您期望的输出将不是有效的JSON,并且无法在任何符合JSON的系统中加载。

我的建议是将每个日期的文本值放在自己的数组中。这样,每个日期可以有多个,而不会破坏PHP或JSON的数组结构。你最终会得到这样的东西:

var codropsEvents = {
    '11-23-2015' : ['text', 'text two'],
    '11-20-2015' : ['some other text'],
    '11-19-2015' : ['Anything that is text']
};

因此,以这种格式构建PHP数据,并使用json_encode()生成JavaScript。

当然还有其他方法可以解决这个问题,但我认为这应该会给你最接近你想要实现的目标。

希望有所帮助。