0

データベース内のレコード値を配列でこのように並べ替えるにはどうすればよいですか。日番号を追加するとします。

array
 [0] => array=>'id'=>'26' 'date'=>'26'

 [1] => array=>'id'=>'27' 'date'=>'27',
        array=>'id'=>'28' 'date'=>'27',
        array=>'id'=>'29' 'date'=>'27'

 [2] => array=>'id'=>'30' 'date'=>'29'

 [3] => array=>'id'=>'31' 'date'=>'31',
        array=>'id'=>'32' 'date'=>'31',
        array=>'id'=>'33' 'date'=>'31'

基本的には、次のIDに月の同じ日付(日番号)のレコードが含まれている場合、同じインデックスに配列を追加したいと考えています。それ以外の場合は、通常どおり追加します。

現在、私の関数は、必要な形式でソートせずにレコードの行を追加しています。

この形式にしたい理由は、foreach を実行する必要があり、1 日に 2 つのレコードが含まれている場合<li>、順不同リストに別のレコードが追加されるためです。

public function getArticles()
{
        $sql = 'CALL getArticles()';        
        $articles = Array();

        if (Model::getConnection()->multi_query($sql)) {
            do {
                if ($result = Model::getConnection()->store_result()) {
                    while ($row = $result->fetch_assoc()) {     
                        array_push($articles,$row);                         
                    }
                $result->free();
                } 
            } while (Model::getConnection()->next_result());
        }
        return $articles;
}
4

2 に答える 2

0

あなたのコードの一部が何をしているのかわかりませんが、これは重要な部分だと思います。

while ($row = $result->fetch_assoc()) {     
    if (!isset($articles[$row['date']])) {
        $articles[$row['date']] = array();
    }
    $articles[$row['date']][] = $row;                        
}

唯一の違いはdate、ゼロからインクリメントするのではなく、配列がキー付けされることです。本当にインデックスを再作成したい場合は、次のことができます...

array_values($articles);
于 2012-04-03T22:29:51.050 に答える
0

saveer が指摘したように、あなたのコードにはよくわからない機能がたくさんあるので、プロセスの所在を示すコメントを含めました。

// Start of your loop

// $value is what you're getting from the DB...

$array_search = array_search($value,$main_array);

if($array_search)
{
   // If this value already exists, we need to add
   // this value in +1 of its current value
   $main_array[$array_search][] = $value + 1;
}
else
{
   // Make a new array key and add in the value
   $main_array[] = $value;
}

// End of your loop
于 2012-04-04T01:08:35.387 に答える