2017-12-20 17 views
1

私は連想配列にいくつかのデータを追加したいコードを書いています。私はarray_pushを使いたがっていましたが、私はこのプラクティスについてコミュニティに尋ねるべきだと思いました。これを正しい方法でやっていますか?私が達成したいのは、forループの各インデックスのデータを配列に追加する必要があるが、ここで私が考えるたびに新しいインスタンスが作成されるということです。オプションは配列で、id_optionとnameはデータを見つけるときのように配列の各インデックスになければならない。それは$options[0]['id_option']でなければならない。forループ内の連想配列

for ($mn = 0; $mn < sizeof($pages); $mn++) { 
    $options = array(
     array(
      'id_option' => $pages[$mn]['meta_title'], 
      'name' => $pages_links[$mn]['link'], 
     ) 
    ); 
} 

それが唯一の理論的な目的のためだ(下の1に構文エラー、私はまた、このようにそれを試してみましたが、これは動作しません:

$options = array(
    for ($mn = 0; $mn < sizeof($pages); $mn++) { 
     array(
      'id_option' => $pages[$mn]['meta_title'], 
      'name' => $pages_links[$mn]['link'], 
     ) 
    } 
); 
+1

'$ options = array(' $ options [] = array( '? – Eric

+0

)行を変更して、それがうまくいくかどうか確認してください。 – Shahab

答えて

2
$options = array();//init the array options 

for ($mn = 0; $mn < sizeof($pages); $mn++) { 
    $options[] = array(
     'id_option' => $pages[$mn]['meta_title'], 
     'name' => $pages_links[$mn]['link'], 
    ); 
} 

print_r($options); 

$オプション変数の後ろにある小括弧に注意してください。これはPHPに配列に値を追加するよう指示します$ options

+0

これは私が欲しいものを与えてくれています。ありがとう – Shahab

0

あなたがこの希望:

$options = array(); 

for ($mn = 0; $mn < sizeof($pages); $mn++) 
{ 
    $options[$mn] = array(); 
    $options[$mn]['id_option'] = $pages[$mn]['meta_title']; 
    $options[$mn]['name'] = $pages_links[$mn]['link']; 
} 
+1

$ options.push、これはjavascript – Cedric

+3

Omg、あなたは正しいです。私は今それを修正します。 – Ivan86

1

これを上書きしないで追加したいので、$options[] = xを使用してください。

ループの上に空の配列を定義することをお勧めします。したがって、コードの他の部分では、少なくとも未定義のvarではなく空の配列で作業することになります。

// define $options as an array 
$options = []; 

// add array with data to $options array 
for ($mn = 0; $mn < sizeof($pages); $mn++) { 
    $options[] = [ 
     'id_option' => $pages[$mn]['meta_title'], 
     'name' => $pages_links[$mn]['link'], 
    ]; 
} 

また、2番目のネストされた配列も削除しました。

+0

私もこれを試しました。それは働いていますが、私が選んだのは自分のコードに近いところでした。 +1:D – Shahab

0

2番目のコードは機能しません。しかし、最初のコードを少し変更して動作させることができます。

$options = []; // defines the array 
for ($mn = 0; $mn < sizeof($pages); $mn++) { 
    $options[] = array(
      'id_option' => $pages[$mn]['meta_title'], 
      'name' => $pages_links[$mn]['link'], 
    ); 
} 
  • $オプション= []は、配列
  • が次にためのループがあなたのデータをループ定義します。
  • ループが実行されるたびに、PHPはarray()関数を使用して新しい連想配列を作成し、それを$ options配列に新しい要素として追加します。
  • 最後に、多次元配列を取得します。 ($ options)

ありがとう。

0

上記の処理は、毎回オプション配列を上書きします。

ない100%あなたがやろうとしているが、このような何かしようとしているかを確認します。かどうか、

$options = array(); 

for ($mn = 0; $mn < sizeof($pages); $mn++) { 
    $key = $pages[$mn]['meta_title']; 
    $value = $pages_links[$mn]['link']; 
    $options[$key] = $value; 
} 

var_dump($options); 

私はあなたの元のデータがどのように見えるかわからないので、テストには少し難しいですがこれはうまくいくでしょう。

希望します。