web-dev-qa-db-ja.com

ループ内に多次元配列を作成する

私はこのような配列をループで作成しようとしています:

$dataPoints = array(
    array('x' => 4321, 'y' => 2364),
    array('x' => 3452, 'y' => 4566),
    array('x' => 1245, 'y' => 3452),
    array('x' => 700, 'y' => 900), 
    array('x' => 900, 'y' => 700));

このコードで

$dataPoints = array();    
$brands = array("COCACOLA","DellChannel","ebayfans","google",
    "Microsoft","nikeplus","Amazon"); 
foreach ($brands as $value) {
    $resp = GetTwitter($value);
    $dataPoints = array(
        "x"=>$resp['friends_count'],
        "y"=>$resp['statuses_count']);
}

しかし、ループが完了すると、私の配列は次のようになります。

Array ( [x] => 24 [y] => 819 ) 
13
r1400304

これは、各ループで$dataPointsを新しい配列として再割り当てしているためです。

それを次のように変更します。

$dataPoints[] = array("x"=>$resp['friends_count'],"y"=>$resp ['statuses_count']);

これにより、$dataPointsの末尾に新しい配列が追加されます

28
Hamish

array_merge($array1,$array2)を使用して、反復で使用する配列と最終結果を格納する配列の2つの配列を使用します。コードをチェックアウトします。

$dataPoints = array();  
$dataPoint = array();  

$brands = array(
    "COCACOLA","DellChannel","ebayfans","google","Microsoft","nikeplus","Amazon"); 
foreach($brands as $value){
    $resp = GetTwitter($value);
    $dataPoint = array("x"=>$resp['friends_count'],"y"=>$resp ['statuses_count']);
    $dataPoints = array_merge($dataPoints,$dataPoint);
}
1
rajmohan

繰り返しごとに$ dataPoints変数を上書きしていますが、配列に新しい要素を追加する必要があります...

$dataPoints[] = array("x"=>$resp['friends_count'],"y"=>$resp ['statuses_count']);

0
Kirzilla