繁体   English   中英

创建具有相同键的PHP数组,以将多个行传递给json_encode

[英]Create a PHP array with the same key for multiple rows to json_encode

在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对象的良好格式?

** /!\\更新/!\\ **

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

希望我明白。

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

$array[$key][] = $value;

在最后编辑后更新:您只需要此数组关联结构,其余的将由json_encode完成

您提供的json也不像您要求的那样工作。 对于给定的键,它也只能有一个值,因此它将像PHP的数组一样结束。 您需要制作(字符串的)values数组而不是字符串:

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

为什么不尝试以下示例,不确定是否符合您的要求,但我希望:)

$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"]}

我会尝试这样的东西。

<?php
$date = date('Y-m-d h:i:s');
$date_str = str_replace(array(' ', ':'), '-', $date);
$array[$date_str] = array($value1, $value2, $value3, $valuen);

您遇到的问题在于,您尝试生成的数组格式在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。

当然,还有其他解决方法,但是我认为这应该为您提供与您要达到的目标最接近的匹配。

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM