2

codeigniter フォームの連想配列を設定しましたが、データの周りに foreach ループがあるという問題に遭遇しました。

私はこのコードを持っています-そして、変数名 $array_name を文字列ではなく配列として再宣言していることに気付きました。これが機能しない理由です:

foreach ($search as $search_term){
$count++;
$array_name = '$search'.$count;

$array_name = array(
        'name'  => 'search'.$count,
        'id'    => 'search'.$count,
        'value' => set_value('search'.$count, $search_term),
        'maxlength' => 80,
        'size'  => 30,
        'class' => 'text-input',
);

}

ただし、配列名は $search1 ではなく $array_name としてログに記録されているため、明らかに何か間違ったことをしており、誰かが私を正しい方向に向けてくれることを望んでいました!

私もこれを試しました:

foreach ($search as $search_term){
$count++;
$array_name = '$search'.$count;

'search'.$count = array(
        'name'  => 'search'.$count,
        'id'    => 'search'.$count,
        'value' => set_value('search'.$count, $search_term),
        'maxlength' => 80,
        'size'  => 30,
        'class' => 'text-input',
);

}

これが最終的な結果として私が探しているものですが、全体では 6 つになります。

$search1 = array(
        'name'  => 'search'.$count,
        'id'    => 'search'.$count,
        'value' => set_value('search'.$count, $search_term),
        'maxlength' => 80,
        'size'  => 30,
        'class' => 'text-input',
);
$search2 = array(
        'name'  => 'search2',
        'id'    => 'search2',
        'value' => set_value('search2, $search_term),
        'maxlength' => 80,
        'size'  => 30,
        'class' => 'text-input',
);

編集1:

変数名 $array_name を文字列ではなく配列として再宣言していることに気付きました。これが最初のものが機能しない理由ですが、それを行う方法についてはまだ少し固執しています。

4

1 に答える 1

3

動的文字列を使用して変数を作成するには${'somestring'} =

foreach ($search as $search_term){
    $count++;
    $array_name = '$search'.$count;

    ${'search'.$count} = array(
        'name'  => 'search'.$count,
        'id'    => 'search'.$count,
        'value' => set_value('search'.$count, $search_term),
        'maxlength' => 80,
        'size'  => 30,
        'class' => 'text-input',
    );
}

連想配列を使用する方が良いでしょうが

$searches = array();
foreach ($search as $search_term){
    $count++;
    $array_name = '$search'.$count;

    $searches['search'.$count] = array(
        'name'  => 'search'.$count,
        'id'    => 'search'.$count,
        'value' => set_value('search'.$count, $search_term),
        'maxlength' => 80,
        'size'  => 30,
        'class' => 'text-input',
    );
}

print_r( $searches );
于 2013-08-01T09:44:42.787 に答える