因此,我进行了一个检索一些测试数据的查询,并且需要在数组中对这些数据进行排序。
数据可能如下所示:
文本形式的表格数据
testsuitecollectionId testsuiteId testcaseId Status
17 38 443 passed
457 39 444 passed
455 40 447 passed
455 40 448 passed
455 40 449 passed
34 1216 960 passed
457 1216 961 passed
457 1216 962 passed
34 1216 964 passed
456 1216 966 na
457 124 975 passed
457 124 976 passed
457 124 977 passed
457 142 1033 passed
457 464 1070 passed
457 464 1071 passed
457 464 1072 passed
455 687 1345 passed
34 688 1346 passed
34 690 1351 passed
34 690 1352 passed
34 691 1355 passed
34 691 1356 passed
34 691 1357 passed
34 691 1358 passed
34 691 1359 passed
34 692 1361 failed
34 693 1362 failed
我确实有一个数组,其中包含所需的所有 TestSuiteCollectionIds
,名为 $tsc
。
我想做的是创建一个数组/JSON(不知道什么是最好的),如下所示:
所以我试图通过对数据进行排序来以某种方式获得如图所示的结构,以便稍后在 Excel 中使用它。
我尝试创建一个 foreach
循环,但卡住了。
这将创建一个以下样式的数组:
$ => Array (2)
(
| ['454'] => Array (9)
| (
| | ['0'] = String(2) "38"
| | ['1'] = String(2) "39"
| | ['2'] = String(2) "40"
| | ['3'] = String(2) "40"
| | ['4'] = String(2) "40"
| | ['5'] = String(4) "1216"
| | ['6'] = String(4) "1216"
| | ['7'] = String(4) "1216"
| | ['8'] = String(4) "1216"
)
| ['234'] => Array (9)
| (
| | ['0'] = String(2) "38"
| | ['1'] = String(2) "39"
| | ['2'] = String(2) "40"
| | ['3'] = String(2) "40"
| | ['4'] = String(2) "40"
| | ['5'] = String(4) "1216"
| | ['6'] = String(4) "1216"
| | ['7'] = String(4) "1216"
| | ['8'] = String(4) "1216"
)
)
我用这段代码创建了数组
$tsc_arr = $ts_arr = $tc_arr = array();
foreach ($tsc as $id) {
foreach ($test_data as $key) {
if($key['TestSuiteCollectionId'] = $id){
$tsc_arr[$key['TestSuiteCollectionId']][] = $key['TestSuiteId'];
}
}
}
但我对如何使测试套件变得独特也有点困惑。所以我有唯一的ID testsuitecollectionId
--> 唯一的testsuiteId
--> testcaseId = Status, testcaseId = Status
将其作为 JSON 或数组是最简单的还是有其他我不知道的方法?
我可能已经提出了一个解决方案,但我不知道这是否可以做得更漂亮?
foreach ($tsc as $id) {
foreach ($test_data as $key) {
if($key['TestSuiteCollectionId'] = $id){
$tsc_arr[$key['TestSuiteCollectionId']][$key['TestSuiteId']][] = $key['TestCaseId'].";".$key['StatusName'];
}
}
}
这部分$tsc_arr[$key['TestSuiteCollectionId']][$key['TestSuiteId']][]
使所有 TestCase
数据进入相同的 testsuite
并且测试套件是唯一的。
最佳答案
您可以使用下一个代码MySQL + PHP:
$query = "SELECT * FROM tbl ORDER BY testsuitecollectionId, testsuiteId, testcaseId;";
$stmt = $pdo->prepare($query);
$stmt->execute();
$result = [];
while($r = $stmt->fetch(PDO::FETCH_ASSOC)) {
if (!isset($result["testsuitecollectionId_{$r['testsuitecollectionId']}"]))
$result["testsuitecollectionId_{$r['testsuitecollectionId']}"] = [];
if (!isset($result["testsuitecollectionId_{$r['testsuitecollectionId']}"]["testsuiteId_{$r['testsuiteId']}"]))
$result["testsuitecollectionId_{$r['testsuitecollectionId']}"]["testsuiteId_{$r['testsuiteId']}"] = [];
$result["testsuitecollectionId_{$r['testsuitecollectionId']}"]["testsuiteId_{$r['testsuiteId']}"]["testcaseId_{$r['testcaseId']}"] = $r['status'];
}
print_r($result);
如果您需要 JSON 结果:
$json = json_encode($result);
关于php - 使用 SQL 数据创建数组或 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70078358/