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

У меня есть код, как показано ниже, и я не уверен, какой тип переменной данных $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] =>
)

4 ответа

[] означает 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

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

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

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

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

как мне это прочитать?

поскольку 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...
}

Это массив, но у вас есть вывод, что у ваших вложенных массивов нет ключей. Я уверен, что у них есть ключи по умолчанию 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
}
Другие вопросы по тегам