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