我从数据库中提取信息 - 来自两个不同的表。数据的来源是单个归档文档 - 因此两个表中的每一行都有一个唯一的值行号。
所以代码如下
//get data about the report as a whole.
$sql = "SELECT * FROM reports_list WHERE report_key ='" . $report_key . "'";
$report_data = $wpdb->get_results ($sql);
//Time to start building the file to go out.
$total_report = array();
foreach($reports_in_db as $key)
{
$total_report [$key->line_number] = $key;
}
// get subtitles/abstract
$sql = "SELECT line_number, field_text FROM subtitle_abstract_summary WHERE report_key = '" . $report_key . "'";
$abs_sums = $wpdb->get_results ($sql);
//now for a series of conditional things
if (empty($abs_sums))
{
//echo "subtitles/abstracts"
}
else
{
foreach ($abs_sums as $key)
{
$total_report [$key->line_number] = $key;
}
}
所以我期望发生的是创建一个数组,其中主要数据行散布了字幕行。 实际发生的是$ total_report具有所有主要数据行,后跟所有字幕行。当我print_r数组时,它们不符合我的预期。
例如,如果数据行是1-200行,字幕行是121,161和181,则此代码生成一个数组,其中包含元素1-120,122-160,162-180,然后是121,161和181顺序。
目前,元素是WPDB对象。如果可能的话,我希望能够以正确的顺序获得它们。如果还有一种简单的方法来按元素编号排序,那也没关系。
我尝试在$ total_report上做sort(),但是按照对象第一个字段的字母值排序..
老实说,我很困惑为什么数组没有我认为它们所在的顺序中的元素。
由于
答案 0 :(得分:1)
使用ksort()
按键排序数组。并SORT_NUMERIC
标记,以便将其排序为数字:
<?php
...
ksort($total_report,SORT_NUMERIC);
...
?>