什么是 [] 的含义?

9

我有以下的一段代码,但是我不确定变量$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
请你在提问时多花点时间,这样你可能会得到更多关于这个问题的帮助。 - Bojangles
2
可能是参考 - PHP中这个符号代表什么?的重复问题。 - Wrikken
@Wrikken:有趣的是,在那个页面上根本没有方括号符号!我在Firefox中使用CTRL+F也找不到任何内容。看起来是时候更新它了。 - Wesley Murch
我刚看到,正在编辑中,我毫不犹豫地认为它已经在那里了,这是关于谈论PHP运算符时默认指向的问题。但事实上,它并不是那个问题的重复... http://stackoverflow.com/questions/2431629/php-array-push-vs-myarray 就是其中之一。 - Wrikken
4个回答

30

[] 表示 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行中不能使用标量值作为数组。


我想指出的是,如果$test为空,它可以正常工作。然而,使用array_push()推送时,不能将第一个参数设置为null - Dave Chen

4
在许多语言中,[] 表示数组。同样适用于 PHP 的 array_push():它将元素推入以 [] 结尾的变量中。
如果该变量为 null,则可以将方括号视为声明数组。
JavaScript 中也使用相同的 push 表示法。例如,当像 $var[] = 'a'; 这样使用时,会发生与上面提到的 array_push() 相同的情况。只需找到数组中的下一个位置并在那里添加您的值。
可以使用 forforeachwhiledo while 遍历数组,并可以使用 print_r()var_dump() 函数检查其内容。

2

我该如何阅读它?

由于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...
}

另外,要显示整个变量,您可以使用 var_dump($ACTIVITYGROUPS) - verybadbug

1

这是一个数组,但你的输出显示你的嵌套数组没有键。我相信它们有默认的键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
}

如何在函数中返回具有相同数据的 $ACTIVITYGROUPS[]?这样我就可以在调用函数后读取它....提前致谢。 - Lord OfTheRing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接