PHP как включить неизвестное количество массивов в мою переменную - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь воссоздать нижеследующее, но в пределах PHP для l oop. Это оригинальный код, который мне нужно скопировать.

$values[ 'value' ] = array(
'form' => '1647',
  'row_ids' => array( 0, 1, 2 ),
  0 => array( 0 => '', $first_field => 'Row 1 value', $second_field => '1' ),
  1 => array( 0 => '', $first_field => 'Row 2 value', $second_field => '2' ),
  2 => array( 0 => '', $first_field => 'Row 3 value', $second_field => '3' ),
);
return $values;
}

Мне нужно создать версию Dynami c, я думал, что приведенный ниже код будет работать, но, похоже, это создание родительского массива. не нужно, и я застрял с тем, что делать дальше.

$i = 0;
$count = "0";
$row_values = array();

for ($x = 0; $x < $row_num; $x++) {
  if($x != 0) {
    $i++;
    $count .= ", " . $x;
  }
  $row_values[$i][0] = '';
  $row_values[$i][$first_field] = 'Row 1 value';
  $row_values[$i][$second_field] = "$i";
}

$values[ 'value' ] = array(
  'form' => '1647',
  'row_ids' => array( $count ),
  $row_values
);

Итак, чтобы уточнить, мой код создает:

Array ( [0] => Array ( [0] => [22] => Row 1 value [23] => 0 ) [1] => Array ( [0] => [22] => Row 1 value [23] => 1 ) );

И мне нужно:

[0]=> array(3) { [0]=> string(0) "" [22]=> string(11) "Row 1 value" [23]=> string(1) "1" }

[1]=> array(3) { [0]=> string(0) "" [22]=> string(11) "Row 2 value" [23]=> string(1) "2" }

Это должно работать для любого количества строк, то есть 2 в соответствии с примером или 5 или x.

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Просто определите свой массив, а затем добавьте к нему на основе приращения:

$values['value'] = array( 'form' => '1647' );

for($x = 0; $x < $row_num; $x++) {
    $values['value']['row_ids'][$x] = $x;
    $values['value'][$x] = array( 0 => '',
                                  $first_field => 'Row ' . ($x + 1) . ' value',
                                  $second_field => ($x + 1) );
}
0 голосов
/ 22 апреля 2020

Я не совсем понял, чего вы пытаетесь достичь, но есть упрощенная версия.

<?php
$arr = [];
$arr_n = 3;

for ($i = 1; $i < $arr_n + 1; ++$i) {
    $arr['value'][] = ["Row $i value" => $i];
}

print_r($arr);

Предварительный просмотр

Array
(
    [value] => Array
        (
            [0] => Array
                (
                    [Row 1 value] => 1
                )

            [1] => Array
                (
                    [Row 2 value] => 2
                )

            [2] => Array
                (
                    [Row 3 value] => 3
                )

        )

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...