php里字符串转换数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php里字符串转换数组相关的知识,希望对你有一定的参考价值。
我有一个字符串 想把这个转换成数组 请问有没有函数
array ( 0 => array ( 'url' => 'http://info.047x.com/uploadfile/2011/0302/20110302090725325.jpg', 'alt' => '', ), 1 => array ( 'url' => 'http://info.047x.com/uploadfile/2011/0302/20110302090725559.jpg', 'alt' => '', ), 2 => array ( 'url' => 'http://info.047x.com/uploadfile/2011/0302/20110302090726972.jpg', 'alt' => '', ), 3 => array ( 'url' => 'http://info.047x.com/uploadfile/2011/0302/20110302090726819.jpg', 'alt' => '', ), 4 => array ( 'url' => 'http://info.047x.com/uploadfile/2011/0302/20110302090727473.jpg', 'alt' => '', ), )
把你这个字符串赋值给变量$a.
eval("\$abc=".$a);
print_r($abc); 或是echo is_array($abc);
可以检测到$abc就是转成的数组了追问
不行啊
追答谁说的,我刚才已经测试成功了
eval("\$abc=array ( 0 => array ( 'url' => 'http://info.047x.com/uploadfile/2011/0302/20110302090725325.jpg', 'alt' => '', ), 1 => array ( 'url' => 'http://info.047x.com/uploadfile/2011/0302/20110302090725559.jpg', 'alt' => '', ), 2 => array ( 'url' => 'http://info.047x.com/uploadfile/2011/0302/20110302090726972.jpg', 'alt' => '', ), 3 => array ( 'url' => 'http://info.047x.com/uploadfile/2011/0302/20110302090726819.jpg', 'alt' => '', ), 4 => array ( 'url' => 'http://info.047x.com/uploadfile/2011/0302/20110302090727473.jpg', 'alt' => '', ), );");
print_r($abc);
以上是完整代码
如果你不信输出的是数组,你可以测试$abc[1] 或者其他元素
如果eval("\$abc=".$a);这句不行,你就换成eval("\$abc=".$a.";");可能少个分号.
$a= $r[zp]; //这个就是那个数组字符串但是无法输出
eval("\$abc=".\$a);
echo is_array($abc);
这样写就错了!
eval("\$abc=".\$a); 你这句有问题,最后这个$a之前不能有\,这是转义字符,用在""这样的字符串里的.
$a= $r[zp];
eval("\$abc=".$a.";");
echo is_array($abc);
你复制这3行程序去测试.
那也不行啊!你QQ多少啊!和你请教一下吧
追答495425807
参考技术A 你这里不是已经是数组了吗?追问这个是字符串
PHP - 有没有办法将字符串中的数组转换为 PHP 中的有效数组?
【中文标题】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里字符串转换数组的主要内容,如果未能解决你的问题,请参考以下文章