PHP - 有没有办法将字符串中的数组转换为 PHP 中的有效数组?

Posted

技术标签:

【中文标题】PHP - 有没有办法将字符串中的数组转换为 PHP 中的有效数组?【英文标题】:PHP - Is there a way to convert an array inside a string to a valid array in PHP? 【发布时间】:2022-01-15 21:11:12 【问题描述】:

我有一个简单的问题,我认为我需要帮助。

所以,我有一个 <input type="hidden" name="valid_time[]" value="<?php print_r($valid_time); ?>"> 标签。

这里,那个输入的值是

Array ( [Monday] => Array ( [start_time] => 10:00:00 [end_time] => 17:00:00 ) [Tuesday] => Array ( [start_time] => 10:00:00 [end_time] => 17:00:00 ) [Wednesday] => Array ( [start_time] => 10:00:00 [end_time] => 17:00:00 ) [Thursday] => Array ( [start_time] => 10:00:00 [end_time] => 17:00:00 ) )

现在,当我提交表单并获取该输入的值时,我会得到一个字符串的结果。

print_r($_POST['valid_time'][0]) => 这给了我一个字符串形式的值。

我需要[0],因为假定的数组在$_POST['valid_time'] 内,这也是一个数组。

print_r(gettype($_POST['valid_time'][0])); 给我string

我想要的是把它作为一个数组,这样我就可以循环遍历它。 PHP中有没有办法做到这一点?

PS:如果这篇文章是重复的,请删除链接,我会试一试。提前致谢!

【问题讨论】:

不要为此使用print_r()。您可以改用<?= json_encode($valid_time) ?>,然后使用:$_POST['valid_time'][0] = json_decode($_POST['valid_time'][0]); 解码 json 以再次将其作为 PHP 数组。另一种选择是创建多个隐藏输入字段,一个用于您要发布的每个值。 好的,我试试。如果可行,我很乐意将您的建议标记为我的问题的答案。因此,如果您不介意,可以发表评论作为答案。 :) 谢谢你 @M.Eriksson,所以我所做的就是将 json_encode() 包装在一个 htmlspecialchars() 函数中,它终于奏效了。谢谢你。 【参考方案1】:

所以,我想通了。

至于输入里面的值,应该是

<?php echo htmlspecialchars(json_encode($array)) ?>

现在,在 POST 之后,您可以使用以下命令检索它:

json_decode($_POST['array'])

所以,基本上,我只是忘了输入htmlspecialchars() 函数。

【讨论】:

以上是关于PHP - 有没有办法将字符串中的数组转换为 PHP 中的有效数组?的主要内容,如果未能解决你的问题,请参考以下文章

在 php 中将 XML 文档转换为数组时,有没有办法将其转换回来并将其保存为属性为元素的 XML 文件?

如何将数组值转换为变量?

有没有办法将字符串数组转换为对象集合?

有没有办法将 json 对象转换为 json l 文件

php里字符串转换数组

如何将逗号分隔的字符串转换为数组?