Каково значение []

У меня есть код, как показано ниже, и я не уверен, какой тип переменной данных $ACTIVITYGROUPS[] есть и как его читать?

$ACTIVITYGROUPS[] = saprfc_table_read ($fce, "ACTIVITYGROUPS", $i);

Когда я сделал print_r(saprfc_table_read ($fce, "ACTIVITYGROUPS", $i);, я получил множество массивов без какого-либо разделителя и не знал, как отделить данные. может кто-нибудь сказать мне, что он делает в вышеприведенных предложениях?

Вот что дает результат print_r(saprfc_table_read ($fce, "ACTIVITYGROUPS", $i);:

Array (
    [AGR_NAME] => Y:SECURITY_DISPLAY
    [FROM_DAT] => 20080813
    [TO_DAT] => 99991231
    [AGR_TEXT] => Security Display - Users & Roles
    [ORG_FLAG] => C
)

Array (
    [AGR_NAME] => Y:SECURITY_ADMIN_COMMON
    [FROM_DAT] => 20080813
    [TO_DAT] => 99991231
    [AGR_TEXT] => Security Administrator
    [ORG_FLAG] => C
)

Array (
    [AGR_NAME] => Y:LOCAL_TRANSPORT
    [FROM_DAT] => 20090810
    [TO_DAT] => 99991231
    [AGR_TEXT] => Transport into target client - DEV system only
    [ORG_FLAG] =>
)

Ответ 1

[] означает push - помещает данный аргумент в новый элемент в конце массива. Это означает, что $ACTIVITYGROUPS является массивом *.

$arr = array();
$arr[] = 1;       // Put 1 in position 0
$arr[] = "a";     // Put "a" in position 1
$arr[] = array()  // Put a new, empty array in position 2

Как указано в документах PHP, array_push имеет тот же эффект, что и [].


* Если это не массив, использование [] даст вам синтаксическую ошибку:

Предупреждение: нельзя использовать скалярное значение как массив в test.php в строке 4

Ответ 2

Во многих языках обозначение [] обозначает массив. То же самое, что и php array_push(): он выталкивает элемент в переменной с [] в конце.

Если переменная имеет значение null, вы можете рассматривать квадратные скобки как объявление массива.

То же обозначение push применяется, например, к Javascript. При использовании его как $var[] = 'a'; то, что происходит, такое же, как array_push() Я говорил выше. Просто находит следующую позицию в массиве и добавляет туда ваше значение.

Массив можно пройти с помощью for, foreach, while, do while, и вы можете проверить его содержимое с помощью print_r() или var_dump().

Ответ 3

как его прочитать?

Так как saprfc_table_read уже возвращает массив, $ACTIVITYGROUPS будет массивом массивов ([] создает новый массив в массиве $ACTIVITYGROUPS). Чтобы прочитать его, вы можете перебирать его с помощью foreach:

$ACTIVITYGROUPS[] = saprfc_table_read ($fce,"ACTIVITYGROUPS",$i);

foreach ($ACTIVITYGROUPS as $group) {
    echo $group['AGR_NAME']; // echos Y:SECURITY_DISPLAY on first iteration
    echo $group['FROM_DAT']; // echos 20080813 on first iteration
    // and so on...
}

Ответ 4

Это массив, но вывод, который у вас есть, показывает, что ваши вложенные массивы не имеют ключей. Я уверен, что у них есть ключи по умолчанию 0,1,2,3,4... и так далее, но если вы хотите определить их каким-либо значимым образом, я бы предложил настроить ключи данных в массиве,

print_r($ACTIVITYGROUPS); //this should output the whole array
print_r($ACTIVITYGROUPS[0]); //this should output just the first element of the array, which is also an array
//now you have an 'address' for the array that you understand, now lets output one of the values
foreach($ACTIVITYGROUPS as $key => $item){
    echo $item['ARG_NAME']; // this will output the ARG NAME from each of the arrays, in order
}