我有一个来自json_decode的数组。我想重新格式化它。 这是我的数组格式。
["Schedule"]=>array(1) {
["Origin"]=>
string(3) "LAX"
["Destination"]=>
string(2) "CGK"
["DateMarket"]=>
array(2) {
["DepartDate"]=>
string(19) "2015-02-01T00:00:00"
["Journeys"]=>
array(6) {
[0]=>
array(6) {
[0]=>
string(2) "3210"
[1]=>
string(14) "Plane Name"
[2]=>
string(8) "20150201"
[3]=>
string(8) "20150201"
[4]=>
string(4) "0815"
[5]=>
string(4) "1524"
}
}
}
我希望将索引数组更改为与foreach函数关联。 这是我的PHP代码
foreach ($response->Schedule['DateMarket']['Journeys'] as $key=>$value) {
$value->Name= $value[1];
}
但我收到错误“Attempt to assign property of non-object on line xXx
..
我的问题是,如何将新的关联数组插入到索引数组中,就像我提供的示例一样。
更新:我试过这个解决方案
foreach ($response->Schedule['DateMarket']['Journeys'] as $key=>$value) {
$value['Name']=$value[1];
}
但我的数组格式仍然相同,没有错误。
答案 0 :(得分:2)
试试这个:
foreach ($response->Schedule['DateMarket']['Journeys'] as $key=>$value) {
$value['Name'] = $value[1];
}
答案 1 :(得分:2)
在这一行:
$value->Name= $value[1];
您希望$ value既是对象($ value-> Name)又是数组($ value [1])。
将其更改为:
foreach ($response->Schedule['DateMarket']['Journeys'] as $key=>$value) {
$response->Schedule['DateMarket']['Journeys'][$key]['Name'] = $value[1];
}
甚至更好,没有预告:
$keys = array(
0 => 'Id',
1 => 'Name',
2 => 'DateStart',
3 => 'DateEnd',
4 => 'HourStart',
5 => 'HourEnd',
);
$values = $response->Schedule['DateMarket']['Journeys'];
$response->Schedule['DateMarket']['Journeys'] = array_combine( $keys , $values );
Array_combine使用来自一个输入的键和来自另一个输入的键来创建数组。 文档:http://php.net/manual/en/function.array-combine.php
答案 2 :(得分:1)
您想要创建新的数组索引,但尝试创建新对象。
foreach ($response->Schedule['DateMarket']['Journeys'] as $key => $value) {
$value['Name'] = $value[1];
}