Создайте многомерный массив в цикле - PullRequest
12 голосов
/ 21 декабря 2010

Я пытаюсь создать такой массив в цикле:

$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 ) 

Ответы [ 3 ]

26 голосов
/ 21 декабря 2010

Это потому, что вы повторно назначаете $dataPoints как новый массив в каждом цикле.

Измените его на:

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

Это добавит новый массив в конец $dataPoints

1 голос
/ 21 декабря 2010

use array_merge($array1,$array2) упростит использование двух массивов: один для использования в итерации, а другой для хранения конечного результата Оформить заказ код.

$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);
}
0 голосов
/ 21 декабря 2010

Каждую итерацию вы перезаписываете переменную $ dataPoints, но вы должны добавлять новые элементы в массив ...

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

...