2 つの仮定があります。私が質問を誤解したか、他の人が誤解したかのどちらかです。
ポイント:1
2 番目のパラメーターとして$this->db->get();
メソッドに渡すことLIMIT 1
で、クエリに設定され、1
結果として行のみが取得されます。
では、単一行の db 結果に対してループを使用する必要があるのはなぜでしょうか?
結果を使用する$query->result();
と、次のようになります。
Array
(
[0] => stdClass Object
(
[m_name] => Foo
)
)
値を取得するにm_name
は、次のようにします。
$result = $query->result();
echo $result[0]->m_name;
何らかの理由で、値を含む数値配列が必要な場合 (ループで行ったように)、 で簡単に実行できます$name[] = $result[0]->m_name;
。
$query->result_array();
結果を使用すると、次のようになります。
Array
(
[0] => Array
(
[m_name] => Foo
)
)
値を取得するにm_name
は、次のようにします。
$result = $query->result_array();
echo $result[0]['m_name'];
ただし、クエリの制限を停止すると、クエリ結果に複数の行が表示されますrows1 = $query1->result_array();
。代わりに使用できます。array_map()
指定された配列の要素を操作するには:
$rows1 = $query1->result_array();
// `$row1` will be something like this:
Array
(
[0] => Array
(
[m_name] => Foo
)
[1] => Array
(
[m_name] => Bar
)
[2] => Array
(
[m_name] => Baz
)
)
array_map()
結果の配列を操作するために使用します。
function getName($array) {
return $array['m_name'];
}
$array = array_map("getName", $rows1);
print_r($array);
PHP v5.3+ を使用している場合は、次のようにします。
$array = array_map(function($array) {
return $array['m_name'];
}, $rows1);