2014-09-08 8 views
-5

Пример: при добавлении квадратных скобок к $ main_array я получаю 3 точки внутри массива, но когда я удаляю эти скобки, он работает хорошо.Отображается только последний элемент массива

<?php 
$user = array('a','b','c'); 
$cars=array("Volvo","BMW","Toyota"); 
$roll = array(1,2,3); 

$length = count($user); 

$main_array = array(); 

foreach($user as $name){ 
    $list = array(); 
    for($i=0;$i<$length;$i++){ 
     $list[] = array(
      'label' => $cars[$i], 
      'roll' => $roll[$i] 
     ); 
    } 

    $main_array[] = array(
     'name'=> $name, 
     'list'=> $list 
    ); 

} 
var_dump($main_array); 
?> 

Добавлено .... Так вот что я пытаюсь сделать. Пытаясь вытащить корм из API твиттера 1,1

$status = array(); 
$tweetfeed = array(); 
foreach($users as $user){ 
$tweets = $connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$user."&count=".$notweets); 
    $t=0; 
    foreach($tweets as $key) { 
     $status[$t]['text'] = $key ->text; 
     $status[$t]['stamp'] = twitter_time($key -> created_at); 
     ++$t; 
    } 
    $tweetfeed = array (
     'status' => $status   
    ); 
var_dump($tweetfeed); 
} 
var_dump($tweetfeed); 

..End

foreach($user) 
    Main_parent { 
     Child-1{ 
       'key': value 
       'key': value 
     } 

     Child-2{ 
       'key': value 
       'key': value 
     } 
     Child-3{ 
       'key': value 
       'key': value 
     } 

    } 
var_dump(Main_parent); 
    } 
var_dump(Main_parent); 

Calling Main_parent с в Еогеаспе цикл работает нормально, но при вызове вне цикла Еогеаспа только показывает ребенок-3.

+4

Какой язык это должно быть? выглядит как сочетание php и javascript. – Steve

+2

Это потому, что вы сохраняете только последнее значение. – machineaddict

+0

@ user574632 ... Я пишу это в PHP –

ответ

0

Вы переписываете значение $tweetfeed в каждой итерации.

$tweetfeed = array (
     'status' => $status   
    ); 

Должно быть:

$tweetfeed[] = array (
     'status' => $status   
    ); 

С помощью [] вы толкая значение в массив, а не перезаписывать ее. Вы могли бы фактически упростить все это до:

$tweetfeed = array(); 
foreach($users as $user){ 
$tweets = $connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$user."&count=".$notweets); 
    $status = array(); 
    foreach($tweets as $key) { 
     $status[]=array(
         'text' => $key ->text, 
         'stamp' => twitter_time($key -> created_at) 
         ); 
    } 
    $tweetfeed[] = array (
     'status' => $status   
    ); 
var_dump($tweetfeed); 
} 
var_dump($tweetfeed); 
+0

Как сказано, если я добавлю квадратную скобку в tweetfeed, я получаю структуру массива как ожидалось, но в пределах массива состояния нет содержимого, всего 3 точки ... Если я удалю квадратные скобки, последний элемент tweetfeed показан, но в массиве состояния содержится содержимое. –

+0

@pmvsdt Что значит три точки? Будете ли вы вводить данные в массив или перезаписывать переменную, они не изменят данные в $ status. Можете ли вы сделать живой пример, например здесь: http://codepad.viper-7.com/, поэтому я могу видеть, что вы имеете в виду. – Steve

+0

Отредактировал мой вопрос и добавленный пример. Пожалуйста, проверьте. Спасибо –