我正在尝试在数组的特定位置插入值:
$hi = "test";
$var2 = "next";
$arr = array(&$hi);
$arr[] = &$var2; // this works
array_splice($arr, 1, 0, &$var2); // this doesn't
为什么使用splice插入数组失败,而使用第一种方法不会失败?
这是一个快速粗略的答案,但请注意,使用引用调用此函数已被弃用,并且可能(根据您的PHP配置)会生成警告:
array_splice($arr, 1, 0, array(&$var2));
<?php
$hi = "test";
$var2 = "next";
$arr = array(&$hi);
$arr[] = &$var2; // this works
printf("=== var2 before splice:\n%s\n", var_export($var2, TRUE));
array_splice($arr, 1, 0, &$var2); // this doesn't
printf("=== var2 after splice:\n%s\n", var_export($var2, TRUE));
?>
=== var2 before splice:
'next'
=== var2 after splice:
array (
0 => 'next',
)
<?php
$hi = "test";
$var2 = "next";
$var3 = "last";
$arr = array(&$hi);
$arr[] = &$var2; // this works
array_splice($arr, 1, 0, &$var3);
printf("=== arr is now\n%s\n", var_export($arr, TRUE));
?>
=== arr is now
array (
0 => 'test',
1 => 'last',
2 => 'next',
)
你可能需要将最后一个参数改为数组,否则根据手册中的说明,它将会进行类型转换。
array_splice( $arr, 1, 0, array( &$var2 ) );
这里我正在遍历一个数组($values_arr),并将每个变量的引用存储在另一个数组($params)中。根据您的需求,您可以更改它的用法。
$params = array();
$values_arr = array('a', 'b', 123);
foreach ($values_arr as $key=>&$val) {
$params[$key] = &$val;
}
结果
array (size=3)
0 => &string 'a' (length=1)
1 => &string 'b' (length=1)
2 => &int 123