foreachループの値を配列に格納する方法は?


115

foreachループの値を配列に格納する必要があり、それを行うための助けが必要です。

以下のコードは機能せず、最後の値を保存するだけで、試行されました$items .= ...,が、トリックも実行していません。助けていただければ幸いです。

foreach($group_membership as $i => $username) {
    $items = array($username);
}

print_r($items);

12
.=テキストを追加します。[]配列に追加します。
Skilldrick

はるかにスキルドリックは、それ以上先に進む必要のない1つのライナーでそれを釘付けにしました。
user1946891

回答:


255

$itemsループの外で配列を宣言し、配列$items[]に項目を追加するために使用します。

$items = array();
foreach($group_membership as $username) {
 $items[] = $username;
}

print_r($items);

7
また、キー($i)を使用しない場合は抽出しないでください。
マッテオリヴァ

2
$items = array();foreachの前に宣言する必要さえありませんよね?phpは空の配列を作成するだけです
BassMHL

$ usernameの一部がnullの場合はどうなりますか?同様の状況で、APIからレコードが送られてきて、どういうわけか配列にnullレコードができてしまいます。
pixelwiz 2018

14

使用する

$items[] = $username;

7
$items = array();ループの前に表示されることを確認してください。
Skilldrick

$ items = array();を宣言する必要がある理由を説明してください。ループの前。私はこのようなことをしました、そしてそれを宣言しませんでした、そしてそれはまだ働きます。追加する方が良いですか、それとも必須ではありませんか?
robk27 2017年

これをチェックしてください@ robk27 stackoverflow.com/questions/8246047/...
リアム・マッカーサー

7

試す

$items = array_values ( $group_membership );

1
まあ、私はforeachループがそれ以上のことをしていると思いますが、そうでない場合はこれが最善の解決策です。
Matteo Riva

5
<?php 
$items = array();
$count = 0;
foreach($group_membership as $i => $username) { 
 $items[$count++] = $username; 
} 
print_r($items); 
?>

3
$ countの必要はありません。$ array [] = $ thing;

私はこの回答の反対投票を差し控えます:1.これはコードのみの回答です2.それは開発者に不必要な/悪い習慣を教えます... 。
mickmackusa

私の配列が配列にプッシュされた最後の要素のみを返すという問題があります。あなたが提案したカウントを使用すると、私の問題が解決しました。
Jass Preet

2

あなたは私の答えを試すことができます、

あなたはこれを書いた:

<?php
foreach($group_membership as $i => $username) {
    $items = array($username);
}

print_r($items);
?>

そしてあなたの場合、私はこれを行います:

<?php
$items = array();
foreach ($group_membership as $username) { // If you need the pointer (but I don't think) you have to add '$i => ' before $username
    $items[] = $username;
} ?>

あなたの質問に示すように、特定のグループに含まれるユーザー名の配列が必要であるようです:)この場合、私は単純なwhileループを使用した優れたSQLクエリを好みます;)

<?php
$query = "SELECT `username` FROM group_membership AS gm LEFT JOIN users AS u ON gm.`idUser` = u.`idUser`";
$result = mysql_query($query);
while ($record = mysql_fetch_array($result)) { \
    $items[] = $username; 
} 
?>

whileより高速ですが、最後の例は観察の結果にすぎません。:)


0
$items=array(); 
$j=0; 

foreach($group_membership as $i => $username){ 
    $items[$j++]=$username; 
}

コードで上記を試してください。


このコードのみの回答は、どの開発者も使用しないでください。カウンターとインクリメントはまったく必要ありません。
mickmackusa

0

あまりにも多くのタイプミスを救うために:

foreach($group_membership as $username){
        $username->items = array(additional array to add);
    }
    print_r($group_membership);

-1

この質問はかなり古いようですが、問題が発生した場合は、PHPの組み込み関数array_push()を使用して、以下の例を使用して配列にデータをプッシュできます。

<?php
    $item = array();
    foreach($group_membership as $i => $username) {
        array_push($item, $username);
    }
    print_r($items);
?>

反復関数呼び出しを行うことは非効率的です。角括弧プッシュ構文(8年前に推奨)はより効率的です。この回答は、単一の要素を配列にプッシュするためには使用しないでください。(そして宣言$iは役に立たない)
mickmackusa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.