在PHP中将字符串转换为数组(Converting string into array in php)
我有像下面的字符串
["Day1"]["Morning"]=mutton&["Day1"]["Evening"]=Juice&["Day2"]["Morning"]=burger&["Day2"]["Evening"]=pizza
我正在尝试将其转换为如下所示的数组
$arr["Day1"]["Morning"] = "mutton";
$arr["Day1"]["Evening"] = "Juice";
$arr["Day2"]["morning"] = "burger";
$arr["Day2"]["evening"] = "pizza";
我尝试了下面的东西。
$str = '["Day1"]["Morning"]=mutton&["Day1"]["Evening"]=Juice&["Day2"]["Morning"]=burger&["Day2"]["Evening"]=pizza';
$pieces = explode("&", $str);
foreach($pieces as $pie)
{
$arr.$pie;
}
var_dump($arr);
我知道上面的代码真的很愚蠢:/。是否有适当的解决方案?
I have string like below
["Day1"]["Morning"]=mutton&["Day1"]["Evening"]=Juice&["Day2"]["Morning"]=burger&["Day2"]["Evening"]=pizza
Which i am trying to convert into array like below
$arr["Day1"]["Morning"] = "mutton";
$arr["Day1"]["Evening"] = "Juice";
$arr["Day2"]["morning"] = "burger";
$arr["Day2"]["evening"] = "pizza";
I tried something like below.
$str = '["Day1"]["Morning"]=mutton&["Day1"]["Evening"]=Juice&["Day2"]["Morning"]=burger&["Day2"]["Evening"]=pizza';
$pieces = explode("&", $str);
foreach($pieces as $pie)
{
$arr.$pie;
}
var_dump($arr);
I know above code is really dumb :/ .Is there any proper solution for this ?
原文:https://stackoverflow.com/questions/21746826
更新时间:2020-01-22 16:27
最满意答案
你可以这样做...
$str='["Day1"]["Morning"]=mutton&["Day1"]["Evening"]=Juice&["Day2"]["Morning"]=burger&["Day2"]["Evening"]=pizza';
$arr = explode('&',$str);
foreach($arr as $v)
{
$valarr=explode('=',$v);
preg_match_all('/"(.*?)"/', $valarr[0], $matches);
$narr[$matches[1][0]][$matches[1][1]]=$valarr[1];
}
print_r($narr);
OUTPUT :
Array
(
[Day1] => Array
(
[Morning] => mutton
[Evening] => Juice
)
[Day2] => Array
(
[Morning] => burger
[Evening] => pizza
)
)
你可以访问像echo $arr["Day1"]["Morning"]打印mutton
You could do like this...
$str='["Day1"]["Morning"]=mutton&["Day1"]["Evening"]=Juice&["Day2"]["Morning"]=burger&["Day2"]["Evening"]=pizza';
$arr = explode('&',$str);
foreach($arr as $v)
{
$valarr=explode('=',$v);
preg_match_all('/"(.*?)"/', $valarr[0], $matches);
$narr[$matches[1][0]][$matches[1][1]]=$valarr[1];
}
print_r($narr);
OUTPUT :
Array
(
[Day1] => Array
(
[Morning] => mutton
[Evening] => Juice
)
[Day2] => Array
(
[Morning] => burger
[Evening] => pizza
)
)
You could access like echo $arr["Day1"]["Morning"] which prints mutton
2014-02-13
相关问答
看起来你有魔术引号。 禁用它可以阻止大量的反斜杠。 Looks like you have magic quotes on. Disable it to stop the massive multitude of backslashes.
你可以试试 $data = Array(
1 => "Laravel",
2 => "Volta",
3 => "Web",
4 => "Design",
5 => "Development"
);
array_walk($data, function (&$item, $key) {
$item = array("id"=>$key,"text"=>$item);
});
print(json_encod
...
你应该使用array_map而不是array_walk : $numArray = array_map('intval', $numArray);
如果您仍想使用array_walk - 请参阅说明的手册 : 如果回调需要使用数组的实际值,请将回调的第一个参数指定为引用。 然后,对这些元素所做的任何更改都将在原始数组中进行。 由于intval函数不能与引用一起使用,因此需要将其包含在其他逻辑中,例如: array_walk($numArray, function(&$v){ $v = intva
...
使用JSON: echo json_encode($yourarray);
echo json_decode($_GET['fromjs']);
Use JSON: echo json_encode($yourarray);
echo json_decode($_GET['fromjs']);
那么,如果你的字符串格式化的很好,这里有一个可以解释的函数: function($text){
$arr = [];
$category = "";
$subcategory = "";
foreach (explode("\n", $text) as $line) {// For every line
if (startsWith($line, ' ')){
if (startsWith($line, '
...
你可以这样做... <?php
$str='["Day1"]["Morning"]=mutton&["Day1"]["Evening"]=Juice&["Day2"]["Morning"]=burger&["Day2"]["Evening"]=pizza';
$arr = explode('&',$str);
foreach($arr as $v)
{
$valarr=explode('=',$v);
preg_match_all('/"(.*?)"/', $valarr[0],
...
从PHP 5.4你可以简单地eval:eval(“\ $ f = ['method'=>'post','action'=>'#'];”); 后续代码var_dump($ F); 对于olders,你必须稍微修改一下字符串,将第一个“[”改为“array(”和“last”]“改为”)“”。 问题是如何在PHP中从var_dump的输出创建一个数组? From php 5.4 you can simply eval: eval("\$f=['method'=>'post','action'=>'#']
...
$php_object = json_decode($javascript_array_string)
这将返回一个对象,其属性对应于javascript数组的属性。 如果需要关联数组,请将true作为第二个参数传递给json_decode $php_array = json_decode($javascript_array_string, true)
另外还有一个json_encode函数。 $php_object = json_decode($javascript_array_string
...
尝试这个 $var = '{"msg": "background1.jpg"}';
var_dump($var);
` Try this $var = '{"msg": "background1.jpg"}';
var_dump($var);
`
您可以通过序列化将任何PHP数据类型但资源转换为字符串: $string = serialize($array);
然后再次反序列化为原始形式: $array = unserialize($string);
序列化数组是以字符串形式存在的。 它可以通过反序列化再次转换为数组。 同样_decode于您的数组的json_encode / - _decode : $string = json_encode($array);
$array = json_decode($string);
You ca
...