Отображение многомерного массива в php - PullRequest
1 голос
/ 22 января 2010

У меня есть такой массив:

$tset = "MAIN_TEST_SET";
$gettc = "101";
$getbid = "b12";
$getresultsid = "4587879";
    $users["$tset"] = array(
                "testcase"=>"$gettc",
                "buildid"=>"$getbid",
                "resultsid"=>"$getresultsid" 
                  );

Массивы в PHP меня смущают.

Я хочу отобразить примерно так:

MAIN_TEST_SET
             101    b12     4587879
             102    b13     4546464
             103    b14     5545465
MAIN_TEST_SET3
            201     n12     45454464

MAIN_TEST_SET4
            302     k32     36545445

Как отобразить это?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 22 января 2010
print_r($users)

Это выведет ваш массив рекурсивно интуитивно понятным способом. См. Руководство: http://us2.php.net/manual/en/function.print-r.php

Если вы хотите напечатать его особым способом, который вы отформатировали выше, вам нужно написать пользовательскую функцию, использующую синтаксис foreach, такой как:

<?php
echo "<table>";
foreach($users as $testSetName=>$arrayOfTestCases){
  echo "<tr><td>".$testSetName."</td></tr>";
  foreach($arrayOfTestCases as $k=>$arrayOfTestCaseFields){
    //$arrayOfTestCaseFields should be an array of test case data associated with $testSetName
    $i = 0;
    foreach($arrayOfTestCaseFields as $fieldName => $fieldValue){
      //$fieldValue is a field of a testcase $arrayOfTestCaseFields
      if($i == 0){
        //inject a blank table cell at the beginning of each test case row.
        echo "<tr><td>&nbsp;</td>";          
        $i++;
      }        
      echo "<td>".$fieldValue."</td>";            
    }
    echo "</tr>";
  }
}
echo "</table>";
?>

Ваши данные должны быть составлены следующим образом:

$tset = "MAIN_TEST_SET"; 
$gettc = "101"; 
$getbid = "b12"; 
$getresultsid = "4587879"; 
$users[$tset] = array();
$users[$tset][] = array( "testcase"=>"$gettc", 
                         "buildid"=>"$getbid", 
                         "resultsid"=>"$getresultsid"  
                  ); 
   $users[$tset][] = ... and so forth ...
1 голос
/ 22 января 2010

Чтобы исправить структуру данных, которую вы представляете (как упоминает Виктор Николлет в своем комментарии), вам нужно что-то вроде этого:

$users = array();   // Create an empty array for the users? (Maybe testsets is a better name?)

$testset = array(); // Create an empty array for the first testset
// Add the test details to the testset (array_push adds an item (an array containing the results in this case) to the end of the array)
array_push($testset, array("testcase"=>"101", "buildid"=>"b12", "resultsid" => "4587879"));
array_push($testset, array("testcase"=>"102", "buildid"=>"b13", "resultsid" => "4546464"));
// etc

// Add the testset array to the users array with a named key
$users['MAIN_TEST_SET'] = $testset;

// Repeat for the other testsets
$testset = array(); // Create an empty array for the second testset
// etc

Конечно, существует гораздо больше способов создания вашей структуры данных, но этот кажется / кажется наиболее ясным из всех, что я могу придумать.

Используйте что-то подобное для создания таблицы HTML с использованием структуры данных, описанной выше.

echo "<table>\n";
foreach($users as $tsetname => $tset)
{
    echo '<tr><td colspan="3">'.$tsetname.'</td></tr>\n';
    foreach($tset as $test)
        echo "<tr><td>".$test['testcase']."</td><td>".$test['buildid']."</td><td>".$test['resultsid']."</td></tr>\n";
}
echo "</table>\n";

Первый foreach выполняет итерации по вашим наборам тестов, а второй - итерации по тестам в наборе тестов.

0 голосов
/ 22 января 2010

Для короткого ненастраиваемого вывода вы можете использовать:

print_r($users)

в качестве альтернативы, вы можете использовать вложенные циклы.

foreach($users as $key => $user) {
    echo $key . "<br />"
    echo $user["testcase"] . " " . $user["buildid"] . " " . $user["resultsid"];
}

Если вы не выводите html, замените <br /> на "\ n"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...