【问题标题】:Update associative array keys更新关联数组键
【发布时间】:2012-09-20 06:51:55
【问题描述】:

我在更新多维关联数组的值时遇到问题。数组$people 是从另一个 MySQL 调用生成的。和 : array_push($people, array("forename" => $pat_f_name, "surname" => $pat_s_name,"id" => $id)); 我已将 $forname$surname 设置为 "",只是为了将密钥放在那里。

我正在尝试遍历进行 SQL 调用的数组并检索相关的名字和姓氏,然后更新该数组索引处的键。

以下是我目前的尝试。

提前致谢。

$stmt = $mysql->stmt_init();

foreach ($people as $person)
{
    if($stmt->prepare("SELECT forename,surname FROM worker WHERE id = ?"))
    {
        $stmt->bind_param('i', $p_id);
        $p_id = $person["id"];
        $stmt->execute();
        $stmt->bind_result($f_name, $s_name);
        while($stmt->fetch())
        {
            $people[$person]["forename"] = $f_name;
            $people[$person]["surname"] = $s_name;

        }
    }
}    


$stmt->close();

【问题讨论】:

    标签: php mysql sql web-applications


    【解决方案1】:

    $person 是一个数组

    $p_id = $person["id"];
    

    这个

    $people[$person]["forename"] = $f_name;
    

    应该输出:

    警告:非法偏移类型在 ....

    var_dump($people)
    

    输出

    array(0) { } 
    

    更好

    foreach($people as $key => $person)
    <your code>
    
    $people[$key]["forename"] = $f_name;
    

    【讨论】:

      【解决方案2】:

      我认为这里的主要问题是您尝试使用 $person 作为索引。要么给你的数组 ($people) 一个适当的索引,要么创建一个全新的数组,在你的 while 循环中用你的新 $persons 填充。

      对于索引解决方案,改为将人员添加到您的数组中:

      $people[$i++] = $person;
      

      对于新数组解决方案,创建一个新数组,然后使用以下方法填充它:

      $newPeople[] = $person;
      

      【讨论】:

        猜你喜欢
        • 2014-03-23
        • 2015-07-21
        • 1970-01-01
        • 2017-09-02
        • 1970-01-01
        • 2020-03-21
        • 1970-01-01
        • 1970-01-01
        • 2018-03-01
        相关资源
        最近更新 更多