通过PHP多维数组解析
我有一个多维数组,我正试图解析它,它返回奇怪的结果(或者我只是忽略了一些简单的东西)。下面是json解码的一个示例打印:通过PHP多维数组解析,php,json,multidimensional-array,Php,Json,Multidimensional Array,我有一个多维数组,我正试图解析它,它返回奇怪的结果(或者我只是忽略了一些简单的东西)。下面是json解码的一个示例打印: Array ( [DateGenerated] => 2014-01-12T19:30:21.897 [Corporation] => Array ( [CorporateBuilderNumber] => MHI [CorporateState] => TX
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从何而来?问题是您首先循环使用“DateGenerated”键 你所有的字符串都来自
echo $value['CorporateBuilderNumber'] . "<br />";
echo $value['CorporateState'] . "<br />";
echo $value['CorporateName'] . "<br />";
echo$value['CorporateBuilderNumber']。“
”;
echo$value['CorporateState']。“
”;
echo$value['CorporateName']。“
”;
正在转换为int(0),并且正在引用您所在日期的第一个字符,即2。循环中的第一次,
$value
包含“2014-01-12T19:30:21.897”
当您试图访问
$value['CorporateBuilderNumber']
而该键不存在时,将转换为$value[0]
,这是字符串的第一个字符,2
,您可以使用以下命令运行表:
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 />";
}
}
foreach($json作为$key=>$value){
if(是_数组($value)){
foreach($key2=>$value2的值){
if(是_数组($values2)){
foreach($value2作为$key3=>$value3){
echo$value3.“
”;
}
}
否则{
echo$value2.“
”;
}
}
}
否则{
回显$value.“
”;
}
}
foreach($json as$key=>$value)
?在foreach语句中省略$key
没有问题。我觉得2可能来自一些早期的代码。在foreach语句之前,您有什么?我意识到发生了什么,并在下面提交了一个答案。@Scopey:是的,我读错了。您的代码没有试图将其作为多维数组处理。我认为您需要研究$value['Corporation']['corporatedbuildernumber']
,$value['corporate']['CorporateState']
,$value['corporate']['BuilderNumber'][0]['BuilderNumber']
,依此类推。好的,我知道你在那里做了什么。你可以继续使用更多的foreach,因为我看到在你的打印样本中有第四个数组。这是正确的答案。我不再使用XML,而是完成了我需要完成的任务。谢谢
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 />";
}
}