【发布时间】:2014-02-04 19:21:35
【问题描述】:
我正在使用 jquery tokeninput 插件和 XML 数据设置输入自动完成。
我有一个结构如下所示的 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<majors>
<major program="GCIS">Computing & Info Sci (PHD)</major>
<major program="UINT">Business Administration (AAS)</major>
etc..
</majors>
我将它加载到 PHP 中:
$majors = simplexml_load_file('../ajax/majors.xml');
然后我想做以下事情:
-
将每个
<major>元素重新格式化为字符串,包括program属性- (例如:
<major program="GCIS">Computing &amp; Info Sci (PHD)</major>变成字符串GCIS - Computing &amp; Info Sci (PHD)
- (例如:
- 通过过滤函数运行转换后的字符串。过滤器函数检查
strpos($convertedString, $userQuery),如果用户的查询存在则返回真/假 - 包含
$userQuery的元素都被编码为json_encode($arr) - 返回 JSON 数据。
这是我目前拥有的代码...我似乎无法让格式化/过滤正常工作。
if(isset($_POST['query']) ) {
$majors = simplexml_load_file('../ajax/majors.xml');
# iterate through.
foreach ($majors as $key => $value) {
$arr = array('major' => $value['program'] . " - " . $value);
}
# filter the response using our query
$arr = array_filter($arr, 'filterArrayWithQuery');
# JSON-encode the response
$json_response = json_encode($arr);
# Return the response
return $json_response;
}
# ensures that the search query is present
function filterArrayWithQuery( $string ) {
return !strpos( $string, $query ) === false;
}
最终结果 JSON 输出应如下所示:
{"major":"GCIS - Computing & Info Sci (PHD)","major":"UINT - Business Administration (AAS)"}
【问题讨论】:
-
JSON 最终结果 JSON 输出是否正确?您的关联数组有 2 个名为“major”的键。
-
@Yeah:最终结果 JSON 输出是我想要的输出。我想知道我需要进行哪些更改才能获得该输出:)
-
@Prefix 这不是有效的 JSON。所以你不能使用
json_encode()来生成这样的输出。 -
看看这个输出格式:
{"majors":["GCIS - Computing & Info Sci (PHD)","UINT - Business Administration (AAS)"]}。适合你吗?