3维数组foreach

时间:2014-09-30 05:39:59

标签: php arrays api multidimensional-array foreach

我在显示多维数组时出现问题...

$copyscape = array (
                'query' => 'www.example.html',
                'querywords' => 444,
                'count' => 230,             
                'result' => array(
                                        'number' => array(
                                                'index' => 1,   
                                                'url' => 'http://www.archives.gov/exhibits/charters/declaration_transcript.html',
                                                'title' => 'Declaration of Independence - Text Transcript',
                                                'minwordsmatched' => 406,
                                                'viewurl' => 'http://view.copyscape.com/compare/w4med9eso0/1'
                                        )
                )
    );

基本上我想显示所有内容并将其保存在变量中......

echo "<ul>";
        foreach($copyscape as $name => $value)
        {
            echo "<li>" . $name . " : ". $value . "</li>";      

        }       
        echo "</ul>";

我尝试插入另一组foreach但它给了我一个    为foreach()提供的参数无效

8 个答案:

答案 0 :(得分:4)

尝试使用此代码:

$copyscape = array (
                'query' => 'www.example.html',
                'querywords' => 444,
                'count' => 230,             
                'result' => array(
                                        'number' => array(
                                                'index' => 1,   
                                                'url' => 'http://www.archives.gov/exhibits/charters/declaration_transcript.html',
                                                'title' => 'Declaration of Independence - Text Transcript',
                                                'minwordsmatched' => 406,
                                                'viewurl' => 'http://view.copyscape.com/compare/w4med9eso0/1'
                                        )
                )
    );
function test_print($item, $key)
{
    echo "<li>" . $key . " : ". $item . "</li>";
}
echo "<ul>";
array_walk_recursive($copyscape, 'test_print');
echo "</ul>";

答案 1 :(得分:1)

使用此

foreach ($copyscape as $key=>$value){

echo "<li>" . $key. " : ". $value. "</li>";      // this for main Array

if (is_array ($value))
{
  foreach ($value as $childArrayKey => $childArrayValue ){
echo "<li>" . $childArrayKey . " : ". $childArrayValue . "</li>"; // this for childe array 
}
}

}

 foreach ($copyscape as $key=>$value){

    echo "<li>" . $key. " : ". $value. "</li>";      // this for main Array


      foreach ($value['result']['number'] as $childArrayKey => $childArrayValue ){
    echo "<li>" . $childArrayKey . " : ". $childArrayValue . "</li>"; // this for childe array 
    }


    }

答案 2 :(得分:0)

如果您希望列表中有列表(嵌套级别)..

function outputLevel($arr)
{
  echo '<ul>';
  foreach($arr as $name => $value)
  {
   echo '<li>';
   if (is_array($value))
      outputLevel($value);
   else 
      echo $name . ' : ' . $value;
   echo '</li>'      
  }        
  echo '</ul>';
}

outputLevel($copyscape);

答案 3 :(得分:0)

请尝试以下代码:

<?php
    $copyscape = array (
                    'query' => 'www.example.html',
                    'querywords' => 444,
                    'count' => 230,             
                    'result' => array(
                                            'number' => array(
                                                    'index' => 1,   
                                                    'url' => 'http://www.archives.gov/exhibits/charters/declaration_transcript.html',
                                                    'title' => 'Declaration of Independence - Text Transcript',
                                                    'minwordsmatched' => 406,
                                                    'viewurl' => 'http://view.copyscape.com/compare/w4med9eso0/1'
                                            )
                    )
        );
    MultiDimRecuArray($copyscape);
    function MultiDimRecuArray($copyscape) {
        echo "<ul>";
        foreach ($copyscape as $key=>$val) {
            if(is_array($val)){
                MultiDimRecuArray($val);
            }else{
                echo "<li>" . $key . " : ". $val . "</li>";
            }
        }
        echo "</ul>";
    }

答案 4 :(得分:0)

尝试使用递归函数,例如:

function printArray($array)
{
    echo "<ul>";

    foreach($array as $name=>$value)
    {   
        if(is_array($value))
        {
            printArray($value);   
        }
        else
        {
            echo "<li>" . $name . " : ". $value . "</li>";    
        }
    }

    echo "</ul>";
}

$copyscape = array (
                'query' => 'www.example.html',
                'querywords' => 444,
                'count' => 230,             
                'result' => array(
                                        'number' => array(
                                                'index' => 1,   
                                                'url' => 'http://www.archives.gov/exhibits/charters/declaration_transcript.html',
                                                'title' => 'Declaration of Independence - Text Transcript',
                                                'minwordsmatched' => 406,
                                                'viewurl' => 'http://view.copyscape.com/compare/w4med9eso0/1'
                                        )
                )
    );

printArray($copyscape);

答案 5 :(得分:0)

使用此功能:

function print_stuff($arr){
    foreach($arr as $key => $val){
        if(is_array($val)){
            echo "$key: <ul>";
            print_stuff($val);
            echo "</ul>";
        } else {
            echo "<li>$key : $val</li>\n";
        } 
    }
}

echo "<ul>";
print_stuff($copyscape);
echo "</ul>";

代码会打印 nested list ,包括嵌套列表的 key name

query : www.example.html
querywords : 444
count : 230
result:
    number:
        index : 1
        url : http://www.archives.gov/exhibits/charters/declaration_transcript.html
        title : Declaration of Independence - Text Transcript
        minwordsmatched : 406
        viewurl : http://view.copyscape.com/compare/w4med9eso0/1

答案 6 :(得分:0)

使用此

<?php
$copyscape = array (
                    'query' => 'www.example.html',
                    'querywords' => 444,
                    'count' => 230,             
                    'result' => array(
                                            'number' => array(
                                                    'index' => 1,   
                                                    'url' => 'http://www.archives.gov/exhibits/charters/declaration_transcript.html',
                                                    'title' => 'Declaration of Independence - Text Transcript',
                                                    'minwordsmatched' => 406,
                                                    'viewurl' => 'http://view.copyscape.com/compare/w4med9eso0/1'
                                            )
                    )
        );
PrintMultiDimArray($copyscape);
function PrintMultiDimArray($copyscape) {
    echo "<ul>";
    foreach ($copyscape as $key=>$val) {
        if(is_array($val)){
            echo "<li>";
            PrintMultiDimArray($val);
            echo "</li>";
        }else{
            echo "<li>" . $key . " : ". $val . "</li>";
        }
    }
    echo "</ul>";
}
?>

答案 7 :(得分:0)

试试这个..

echo '<ul>';
displayList($copyscape);
echo '</ul>';

function displayList($arr)
{
      foreach($arr as $name => $value) {
          if (is_array($value)) {
                displayList($value);
          }  
          else {
                echo '<li>';
                echo $name . ' : ' . $value;  
                echo '</li>';
          }  
      }        
}