私はこのエラーについてかなり徹底的な検索を行いました。「配列またはSQLクエリを渡していることを確認する」に関する一般的な回答はたくさんありますが、CodeIgniterライブラリごとにさらに具体的なヘルプが必要になる可能性があります。
クエリ(または配列)を作成してテーブルを生成するだけのビューがあります。
(最終的に、クエリはモデルから発生し、テーブル生成はコントローラーの関数になるため、他のビューで再利用できますが、最初は基本的なエコーから画面へのエコーから始めます)
ビューは次のように設定されます。
<div class="span4 well well-small">
<h4>Requests:</h4>
<?php
$this->table->set_heading('ID', 'Request', 'User', 'Date');
$query = array('id'=>'123', 'request'=>'FARTS', 'user'=>'Steve', 'date'=>'Today'); //$this->db->select('user_id', 'password', 'user_name', 'company_id')->from('users');
echo $this->table->generate($query);
?>
<h4>In this div:</h4>
<p>we will display some information about recent requests. It will show a small table with Request ID, Request Name, and Date Requested headers.</p>
</div>
これにより、次のような4つのPHPエラーボックスを含むボックスが出力されます。
PHPエラーが発生しました
重大度:警告
メッセージ:foreach()に無効な引数が指定されました
ファイル名:libraries / Table.php
行番号:198
Table.phpライブラリの行198を確認すると、配列(連想的かどうか)、またはDBからのクエリが必要です。非連想配列、連想配列、およびデータベースクエリを渡そうとしましたが、これらはすべて同じエラーを生成します。
そして、CIをリーフする必要がないので、エラーをスローする関数は次のとおりです。
function _prep_args($args)
{
// If there is no $args[0], skip this and treat as an associative array
// This can happen if there is only a single key, for example this is passed to table->generate
// array(array('foo'=>'bar'))
if (isset($args[0]) AND (count($args) == 1 && is_array($args[0])))
{
// args sent as indexed array
if ( ! isset($args[0]['data']))
{
foreach ($args[0] as $key => $val)
{
if (is_array($val) && isset($val['data']))
{
$args[$key] = $val;
}
else
{
$args[$key] = array('data' => $val);
}
}
}
}
else
{
foreach ($args as $key => $val)
{
if ( ! is_array($val))
{
$args[$key] = array('data' => $val);
}
}
}
return $args;
}