我的代码:
public function valRef($arr) {
$refs = array();
foreach ($arr as $key => $value) {
$refs[$key] = &$arr[$key];
}
var_dump($refs);
//var_dump($refs) returns something like this:
array(1) {
[0]=>
&int(1)
return $refs;
}
这是使用该功能的地方。我不明白为什么返回的$refs
数组不同。它不应该与上面那个相同吗?
var_dump($this->helperClass->valRef($ref));
array(1) {
[0]=>
int(1)
}
call_user_func_array('mysqli_stmt_bind_param', array_merge(array($q, $prep), $this->helperClass->valRef($ref)));
答案 0 :(得分:0)
我想我明白了:
<?php
echo '<pre>';
function valRef(&$arr)
{
$refs = array();
foreach ($arr as $key => $value)
{
$refs[$key] = &$arr[$key];
}
var_dump($refs);
echo '<hr>';
return $refs;
}
$arr = array(1, 5, 7, "hello");
$refs = valRef($arr);
var_dump($refs);
echo '<hr>';
$link = mysqli_connect('localhost', 'testman', 'agave');
$q = mysqli_prepare($link, "SELECT ?, ?, ?, ?");
$prep = "iiis";
call_user_func_array('mysqli_stmt_bind_param', array_merge(array($q, $prep), $refs));
mysqli_stmt_execute($q);
mysqli_stmt_bind_result($q, $c1, $c2, $c3, $c4);
while (mysqli_stmt_fetch($q))
{
echo "$c1, $c2, $c3, $c4";
}
mysqli_stmt_close($q);
mysqli_close($link);
?>
我在我的服务器上运行了这个,并在我的网站浏览器中获得了以下输出:
array(4) {
[0]=>
&int(1)
[1]=>
&int(5)
[2]=>
&int(7)
[3]=>
&string(5) "hello"
}
array(4) {
[0]=>
&int(1)
[1]=>
&int(5)
[2]=>
&int(7)
[3]=>
&string(5) "hello"
}
1, 5, 7, hello
可帮助?
答案 1 :(得分:0)
发生这种情况的原因是因为您传递valRef($ arr)作为参数。由于该函数不是引用变量,因此无法找到指向它的指针。一旦分配给变量,它就会有一个可以使用的引用指针。