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