在我的形式我输出一些json或数据字符串,这是一个数组从Input::old('tags')的问题,我有能够测试它,看看它是否是json,如果它是做一个foreach循环,把标签属性是一个数组然后内爆数组和输出它在输入字段。
[{"id":112,"tag":"corrupti","tagFriendly":"corrupti","created_at":"2015-07-20 00:05:28","updated_at":"2015-07-20 00:05:28","pivot":{"question_id":60,"tag_id":112,"created_at":"2015-07-20 00:05:28","updated_at":"2015-07-20 00:05:28"}},{"id":9,"tag":"placeat","tagFriendly":"placeat","created_at":"2015-07-20 00:05:23","updated_at":"2015-07-20 00:05:23","pivot":{"question_id":60,"tag_id":9,"created_at":"2015-07-20 00:05:28","updated_at":"2015-07-20 00:05:28"}}]
所以我的输出应该是这样的
'corrupti, placeat, etc...'
有没有人能帮我按照我刚才概述的步骤得到想要的结果?
这段代码不工作,但这是我需要发生的事情。Is_array总是false
<?php
$tags = Input::old('tags');
if(is_array($tags)) {
foreach ($tags as $tag) {
$tags[] = $tag->tag;
}
$tags = implode(', ', $tags);
}
?>
给你。
$tags = json_decode(Input::old('tags'), true); // decode json input as an array
if (is_array($tags)) {
foreach ($tags as $key=>$value) {
$tags[$key] = $value['tag'];
}
$tags = implode(', ', $tags);
echo $tags;
}
可以使用array_map从对象中提取标签属性。
<?php
$jsonObject = json_decode(Input::old('tags'));
if(is_array($jsonObject)) {
$onlyTags = array_map(function($item) { return $item->tag; },$jsonObject);
print implode(",", $onlyTags);
}
尝试为json_decode添加true。
json_decode($tags, true);
根据文档,应该返回一个关联数组。http://php.net/manual/en/function.json-decode.php
is_array可能不适用于具有键/值对的关联数组。尝试用以下函数替换is_array:
function is_associate_array($array)
{
return $array === array_values($array);
}
:
if(is_associate_array(json_decode($tags, true))) {
}