Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP多维数组解析_Php_Json_Multidimensional Array - Fatal编程技术网

通过PHP多维数组解析

通过PHP多维数组解析,php,json,multidimensional-array,Php,Json,Multidimensional Array,我有一个多维数组,我正试图解析它,它返回奇怪的结果(或者我只是忽略了一些简单的东西)。下面是json解码的一个示例打印: Array ( [DateGenerated] => 2014-01-12T19:30:21.897 [Corporation] => Array ( [CorporateBuilderNumber] => MHI [CorporateState] => TX

我有一个多维数组,我正试图解析它,它返回奇怪的结果(或者我只是忽略了一些简单的东西)。下面是json解码的一个示例打印:

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 />";
    }
}