-1

foreach ループの外で配列の値を取得しようとしていますが、3 つすべてではなく 1 つの値しか得られません。コードは次のようになります。

$user_id_worker = array();
    foreach ($query_result_worker as $row){
    $user_id_worker= $row['user_id'];
    var_dump($user_id_worker);
}

    var_dump($user_id_worker);

最初の var ダンプは私に与えます:

string '12747' (length=5)
string '12596' (length=5)
string '12759' (length=5)

2番目のもの(ループの外側)は私に与えます:

string '12759' (length=5)

何か案は?ありがとう!

4

6 に答える 6

3

作成した配列に値を追加するのではなく、その値を置き換えています。

したがって、$user_id_worker 変数は 1 つの値のみを保持します。ループの外側では、内側に配置した最後のもの (ループの最後の繰り返し) です。

ループ内の配列に項目を追加する場合は、次のようにします。

$user_id_worker[]= $row['user_id'];
于 2012-09-18T10:41:56.413 に答える
2

それを配列として扱っているのではなく、更新する変数を持っているだけです。

問題は、この行$user_id_worker = $row['user_id'];$user_id_worker行に設定し、次のループで別の値に再度設定することです。変数を配列として扱っていません。

古い値を置き換える代わりに配列に追加するには、配列の短縮形または配列のプッシュを使用する必要があります。以下を参照してください。

配列の短縮形を使用した例:

$user_id_worker = array();
    foreach ($query_result_worker as $row){
    $user_id_worker[] = $row['user_id'];
}

var_dump($user_id_worker);

または、配列 pushを使用します。

foreach ($query_result_worker as $row){
    array_push($user_id_worker, $row['user_id']);
}

var_dump($user_id_worker);

ジミーからの追加の質問

簡単な質問ですが、この配列の後に関数があり、その中で配列を使用したい場合は、show_assigned_tasks_workers($user_id_worker[]); これはうまくいきません。どうすれば他の方法でできますか? ありがとう!– ジミー 17 分前

それは機能しません。関数も選択を行い、その関数で配列がどのようになるかわかりません。データが次のような場合にのみ機能すると思います:文字列 '12747'(長さ= 5)文字列 '12596' (長さ = 5) 文字列 '12759' (長さ = 5) 文字列のように ... – Jimmy 14 分前

おそらく、呼び出している関数の周りで for each ループを実行する必要があります (ワーカーごとに 1 つ)。

次のようにします。

foreach ($user_id_worker as &$workerId) {
  show_assigned_tasks_workers($workerId);
}

ユーザーごとにその関数を 1 回実行します。

于 2012-09-18T10:44:08.863 に答える
1

次のような値を追加する必要があります。$user_id_worker[] = "something"

于 2012-09-18T10:42:47.027 に答える
1

$user_id_worker各ループパスで新しい値を割り当てています。

すべての値を配列として使用する場合は、その配列に値を追加する必要があります。

$user_id_worker[] = $row['user_id'];
// or:
array_push( $user_id_worker, $row['user_id'] );
于 2012-09-18T10:42:56.100 に答える
1

プログラムを次のように変更します。

$user_id_worker = array();
    foreach ($query_result_worker as $row){
    $user_id_worker[] = $row['user_id'];
    var_dump($user_id_worker);
}
于 2012-09-18T10:43:09.237 に答える
-1

コードを修正する

$user_id_worker = array();
    foreach ($query_result_worker as $row){
    $user_id_worker[]=$row['user_id']; //Should give [] as ur appending to array
    var_dump($user_id_worker);
}

    var_dump($user_id_worker);
于 2012-09-18T10:42:08.333 に答える