【问题标题】:Only last element of array is displayed [closed]仅显示数组的最后一个元素[关闭]
【发布时间】:2014-11-01 16:38:13
【问题描述】:

示例:向 $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);
?>

已添加.... 所以这就是我想要做的。试图从 twitter 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);

..结束

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

在 foreach 循环中调用 Main_parent 工作正常,但在 foreach 循环外调用时只显示 child-3。

【问题讨论】:

  • 这应该是什么语言?看起来像是 php 和 javascript 的混合体。
  • 那是因为你只保留最后一个值。
  • @user574632... 我正在用 PHP 写这个
  • 你的 PHP 代码在哪里?
  • @machineaddict 那么我该如何纠正这个问题以在 foreach 循环之后获取整个数组。谢谢

标签: php foreach


【解决方案1】:

您在每次迭代中都会覆盖 $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);

【讨论】:

  • 如前所述,如果我在推文中添加方括号,我会按预期得到数组结构,但在状态数组中,没有内容,只有 3 个点......如果我删除正方形括号,只显示 tweetfeed 的最后一个元素,但状态数组中包含内容。
  • @pmvsdt 三个点是什么意思?无论您将数据推送到数组中,还是覆盖变量,它都不会更改 $status 中的数据。你能做一个活生生的例子吗,例如在这里:codepad.viper-7.com 这样我就能明白你的意思了
  • 编辑了我的问题并添加了示例。请检查。谢谢
  • @pmvsdt 仍然没有发现问题,您的示例运行良好:codepad.viper-7.com/iuLycB#
  • 由于某种原因,我没有在带有方括号的 main_array 中获得任何数据。尝试清除缓存的不同浏览器。您能否将该代码复制到 php 文件并在浏览器中查看。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
相关资源
最近更新 更多