2

テーブルから配列にデータを取得しようとしていますが、速度の問題のために foreach ループをしばらく使用したくありません。

使ってみた

function getRowsAssoc()
{
    $ret = array();
    while (($temp = mysql_fetch_assoc($this->result)) !== FALSE)
    {
        if (count($temp) > 0)
        {
            $ret[] = $temp;
        }
    }
    if (count($ret) > 0)
    {
        return $ret;
    }
    else
    {
        return FALSE;
    }
}

しかし、これはtoになります。

Array (
    [0] => Array ( [MySKU] => BB1-3500-48 [UPC] => 721343100171 ) 
    [1] => Array ( [MySKU] => BC7-3501-19 [UPC] => 721343103516 )
    [2] => Array ( [MySKU] => BC7-3501-95 [UPC] => 721343103523 ) 
    [3] => Array ( [MySKU] => BB1-3502-12 [UPC] => 721343114000 )
    [4] => Array ( [MySKU] => bc7-2370-03 [UPC] => 721343121602 )
)

これの問題は、Assoc 配列を返す代わりに、その上に番号付き配列を追加しているため、アイテム コードからデータを取得できないことです。

私はこのようになりたいです

Array (
         [MySKU] => BB1-3500-48 [UPC] => 721343100171 
         [MySKU] => BC7-3501-19 [UPC] => 721343103516 
        [MySKU] => BC7-3501-95 [UPC] => 721343103523  
        [MySKU] => BB1-3502-12 [UPC] => 721343114000 
        [MySKU] => bc7-2370-03 [UPC] => 721343121602 
    )
4

2 に答える 2

1

キーを指定します。

function getRowsAssoc()
{
    $ret = array();
    while (($temp = mysql_fetch_assoc($this->result)) !== FALSE)
    {
        if (count($temp) > 0)
        {
            $ret[$temp["MySKU"]] = $temp;
        }
    }
    if (count($ret) > 0)
    {
        return $ret;
    }
    else
    {
        return FALSE;
    }
}
于 2013-05-09T13:52:39.323 に答える
0

まず第一に、結果配列の構造がどのように見えるべきかを知っておく必要があります。

のような構造の場合

Array
(
    [MySKU-x] => UPC-x
    [MySKU-y] => UPC-y
    [MySKU-z] => UPC-z
)

これを使用できます:

function getRowsAssoc()
{
    $return = array();
    while (($temp = mysql_fetch_assoc($this->result)) !== false)
    {
        if (count($temp) > 0)
        {
            $return[$temp['MySKU']] = $temp['UPC'];
        }
    }
    if (count($return) > 0)
    {
        return $return;
    }
    else
    {
        return false;
    }
}
于 2013-05-09T14:16:53.873 に答える