Как создать пустую строку, используя для цикла PHP - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь создать для цикла, давая строки пустое значение.Как я могу это сделать?

for ($i = 1; $i <= 24; $i++) {

    $b2_ch_v = ${'b2_g_v_'.$i}['id'];
    $$b2_ch_v = '';

}

/*
result should be:
$b2_g_v_1['id'] = '';
$b2_g_v_2['id'] = '';
[...]
$b2_g_v_24['id'] = '';
*/

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вы устанавливаете $b2_ch_v на текущее содержимое элемента id массива, а не ссылку на элемент массива.Вы должны ссылаться на индекс массива в присваивании.

for ($i = 1; $i <= 24; $i++) {
    $b2_ch_v = 'b2_g_v_'.$i;
    ${$b2_ch_v}['id'] = '';
}

var_dump($b2_g_v_1); // => array(1) { ["id"]=> string(0) "" }

Вам на самом деле не нужна переменная, вы можете сделать вычисление в присваивании:

${'b2_g_v_'.$i}['id'] = '';

Но этоЛучше всего избегать переменных переменных и использовать вместо них массивы, как в другом ответе.

0 голосов
/ 03 октября 2018

Не используйте переменные с именами, такими как $x1, $x2, $x3.Вы почти всегда хотите использовать массивы вместо этого.В этом случае вы можете использовать индексированный массив ассоциативных массивов.Это иногда также называют двумерным массивом.

for ($i = 0; $i < 24; $i++) {
    $b2_ch_v[$i] = ['id' => ''];
}

Тогда ваш первый элемент становится:

$b2_ch_v[0]

И на его именованные элементы можно ссылаться через:

$b2_ch_v[0]['id']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...