1

多次元連想配列の値を更新するのに問題があります。配列$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();
4

2 に答える 2

2

$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;
于 2012-09-28T11:53:53.067 に答える
0

ここでの主な問題は、 $person をインデックスとして使用しようとすることだと思います。配列 ($people) に適切なインデックスを与えるか、完全に新しい配列を作成して、while ループに新しい $persons を入力します。

インデックス ソリューションでは、代わりに次のように人を配列に追加します。

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

新しい配列ソリューションの場合、新しい配列を作成し、次を使用して入力します。

$newPeople[] = $person;
于 2012-09-28T11:44:15.360 に答える