我有一个多维数组,我试图解析它,它会抛出奇怪的结果(或者我只是忽略了一些简单的事情)。以下是json_decode的一个示例print_r:
Array
(
[DateGenerated] => 2014-01-12T19:30:21.897
[Corporation] => Array
(
[CorporateBuilderNumber] => MHI
[CorporateState] => TX
[CorporateName] => McGuyer Homebuilders, Inc.
[Builder] => Array
(
[0] => Array
(
[BuilderNumber] => COV
[BrandName] => Coventry Homes
[ReportingName] => Coventry Homes
[DefaultLeadsEmail] => appsupport@mhinc.com
[BuilderWebsite] => http://www.coventryhomes.com
[Subdivision] => Array
使用此代码时:
<?php
mysql_connect("localhost", "", "");
mysql_select_db("");
$json_data = file_get_contents('mhi.json');
$json = json_decode($json_data, true);
foreach ($json as $value) {
echo $value['CorporateBuilderNumber'] . "<br />";
echo $value['CorporateState'] . "<br />";
echo $value['CorporateName'] . "<br />";
}
?>
我将此作为输出:
2
2
2
MHI
TX
McGuyer Homebuilders, Inc.
2来自哪里?
答案 0 :(得分:2)
第一次在您的循环中,$value
包含"2014-01-12T19:30:21.897"
。
当您尝试访问$value['CorporateBuilderNumber']
且该密钥不存在时,会转换为$value[0]
,这是字符串的第一个字符2
。
答案 1 :(得分:0)
问题是您首先循环使用'DateGenerated'键。
来自
的所有字符串echo $value['CorporateBuilderNumber'] . "<br />";
echo $value['CorporateState'] . "<br />";
echo $value['CorporateName'] . "<br />";
正被转换为int(0),并且引用了那里的第一个字符,即2。
答案 2 :(得分:0)
你可以用这个来运行你的表:
foreach ($json as $key => $value) {
if (is_array($value) ){
foreach( $value as $key2 => $value2){
if( is_array($values2) ) {
foreach( $value2 as $key3 => $value3){
echo $value3. "<br />";
}
}
else{
echo $value2. "<br />";
}
}
}
else {
echo $value. "<br />";
}
}