PHP数组无序

时间:2017-11-05 04:00:15

标签: php mysql arrays sorting

我从数据库中提取信息 - 来自两个不同的表。数据的来源是单个归档文档 - 因此两个表中的每一行都有一个唯一的值行号。

所以代码如下

//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(),但是按照对象第一个字段的字母值排序..

老实说,我很困惑为什么数组没有我认为它们所在的顺序中的元素。

由于

1 个答案:

答案 0 :(得分:1)

使用ksort()按键排序数组。并SORT_NUMERIC标记,以便将其排序为数字:

<?php
   ...
   ksort($total_report,SORT_NUMERIC);
   ...
?>