任何帮助的人都表示赞赏。 php&我去学习。 我的目标:将数组更改为对象并将其作为表格打印出来。 下面是我的json数据,保存为people.txt文件。
{
"people": [
{
"first_name": "John",
"last_name": "Smith",
"city": "NY",
"state": "New York"
},
{
"first_name": "Jane",
"last_name": "Smith",
"city": "Paris",
"state": "France"
},
{
"first_name": "John",
"last_name": "Smith",
"city": "Orlando",
"state": "Florida"
},
{
"first_name": "Jane",
"last_name": "Smith",
"city": "Toronto",
"state": "Canada",
}
]
}
//这个问题是当我尝试使用$ people_data = json_decode($ json_data)将from数组更改为对象时;没有第二个参数“true”。甚至使用$ people_data = json_decode(json_encode($ json_data)); //这是我的PHP代码
$json_data = file_get_contents ("people.txt");
//我能够使用$ people_data = json_decode($ json_data,true);通过将我的数据更改为数组来输出我的表。
$people_data = json_decode ($json_data, true);
$output = "<table border='1' style=' border-collapse:collapse; 'width=25%'>";
$output .= "<tr>";
$output .= "<th>". "First Name" ."</th>";
$output .= "<th>". "Last Name" ."</th>";
$output .= "<th>". "City" ."</th>";
$output .= "<th>". "State" ."</th>";
$output .= "</tr>";
foreach ($people_data ["people"] as $person) {
$output .= "<tr>";
$output .= "<td>". $person ["first_name"] ."</td>";
$output .= "<td>". $person ["last_name"] ."</td>";
$output .= "<td>". $person ["city"] ."</td>";
$output .= "<td>". $person ["state"] ."</td>";
$output .= "</tr>";
}
$output .= "</table>";
echo $output;
?>
这是我使用“数组”的结果的图片,试图得到与“对象”相同的结果。 json table
答案 0 :(得分:0)
,只需将其设置为数组。
动态设置,取消设置或修改对象属性特别有用,尤其是在类中,以避免易失性破坏。比对象更容易处理,也更快,因为转换为数组,它使用索引(有点像在mysql中):
$list = ["first_name", "last_name", "city", "state"]; // set outside loop
$type = "people";
foreach ($people_data [$type] as $key => $person) {
$person = (array) $person; // convert to array
unset($people_data[$type][$key]); // purge unnecessary ram
$output .= '<tr id="' . $type . 'Id_' . $key . '">'; // use single quotes for perf gain
foreach ($list as $key2 => $val) {
$output .= '<td class="' . $val . '">' . $person [$val] . '</td>';
}
$output .= '</tr>';
}
加成:
您正在使用字符串concat(。=)。并且只回显一次。这快10倍。脚本中的多重回应是一个性能杀手。
以同样的方式,使用concat的简单引号而不是双引号,这样PHP就不必检查其中的变量。
总而言之,对于小东西或低流量,这不会改变任何东西,但是当涉及到更重的负载时,你的脚本的性能加倍。