PHP-返回引用


PHP - Return reference

我正在尝试创建一个函数,该函数将接受一个数组并创建列和值,但我不知道如何使用函数返回引用。感谢您的帮助。

private function data($data) {
    $columns = "";
    $values = array();
    foreach ($data as $column => $value) {
        $columns .= ($columns == '') ? '' : ', ';
        $columns .= $column;
        $values[$column] = &$data[$column];
    }
    return array($columns, $values);
}

这是在数据库中插入数据的函数。

/**
* Insert item into items table.
*
* @param (array) $data - Column => value array created in item class.
*/
public function insertItem($data) {
    $columns = "";
    $values = array();
    $prep = "isiisiisiiis";
    /*foreach ($data as $column => $value) {
        $columns .= ($columns == '') ? '' : ', ';
        $columns .= $column;
        $values[$column] = &$data[$column];
    }*/
    $theData = $this->data($data);
    $a = str_repeat('?, ', count($data) );
    $b = substr_replace($a, '', -2);
    $q = $this->db->mysqli->prepare("INSERT INTO items ($columns) VALUES ($b)");
    call_user_func_array( array($q, 'bind_param'), array_merge(array($prep), $values) );
    $q->execute();
    $q->close();
    //return id
    return $this->db->mysqli->insert_id;
}

编辑**工作代码:

private function data(&$data) {
    $columns = "";
    $values = array();
    foreach ($data as $column => $value) {
        $columns .= ($columns == '') ? '' : ', ';
        $columns .= $column;
        $values[$column] = &$data[$column];
    }
    return array($columns, $values);
}

访问方式如下:

$theData = $this->data($data);
$theData[0]; //$columns
$theData[1]; //$values

试试这个:在函数param中添加&,并在foreach循环中删除&

private function data (&$data)
{
    $columns = "";
    $values = array ();
    foreach ($data as $column => $value)
    {
        $columns .= ($columns == '') ? '' : ', ';
        $columns .= $column;
        $values[$column] = $data[$column];
    }
    return array ($columns, $values);
}

内部公共函数insertItem移除$theData =

public function insertItem ($data)
{
    [..]
    $this->data ($data);
}
private function data(&$data) {
    $columns = "";
    $values = array();
    foreach ($data as $column => $value) {
        $columns .= ($columns == '') ? '' : ', ';
        $columns .= $column;
        $values[$column] = &$data[$column];
    }
    return array($columns, $values);
}

$theData = $this->data($data);
$theData[0]; //$columns
$theData[1]; //$values