【问题标题】:PHP: Insert array into an arrayPHP:将数组插入数组
【发布时间】:2013-09-06 16:10:39
【问题描述】:

我试图创建一个包含 100 个项目的数组。 第一个 for 循环运行 10 次,每次运行都会运行另一个 for 循环,将 10 项插入到数组中。

但结果只有最后10项:

class Feed {

public $url;
public $title;

}

function feeds_array() {

for ($x = 0; $x <= 10; $x++) {
    $feeds = feed($x);
}
return $feeds;
}

function feed($x) {
for ($i = 1; $i <= 10; $i++) {
    $feed = new Feed();
    $feed->url = "u" . $x;
    $feed->title = "t" . $i;
    $feeds[] = $feed;
}
return $feeds;
}


$feeds = feeds_array();

foreach ($feeds as $feed) {
echo 'This feed is a ' . $feed->url . ' ' . $feed->title;
echo "<br>";
}

【问题讨论】:

    标签: php arrays for-loop


    【解决方案1】:
    $feeds[] = feed($x);
    

    您正在重新分配 $feeds 而不是插入其中。

    顺便说一句,你应该在使用之前声明$feeds

    function feeds_array(){
      $feeds = array();
      for ($x = 0; $x < 10; $x++){
        $feeds[] = feed($x);
      }
      return $feeds;
    }
    

    并且,作为重写,您实际上迭代了 11 次 ($x &lt;= 10)。我想你只想要$x &lt; 10(假设你从 0 索引开始)。


    工作代码:

    // original feed object
    class Feed
    {
        public $url;
        public $title;
    }
    
    // root method to create an array of arrays
    function feeds_array(){
        // create a variable we're going to be assigning to
        $feeds = array();
        // iterate ten times
        for ($x = 0; $x < 10; $x++){
                // merge/combine the array we're generating with feed() in to
                // our current `$feed` array.
            $feeds = array_merge($feeds, feed($x));
        }
        // return result
        return $feeds;
    }
    
    // nested function to create and return an array
    function feed($x){
        // again, initialize our resulting variable
        $feeds = array();
        // iterate over it 10 times
        for ($y = 0; $y < 10; $y++){
                // create the new object
            $feed = new Feed();
            $feed->url = 'u' . $x;
            $feed->title = 't' . $y;
                // push it in to the result
            $feeds[] = $feed;
        }
        // return the result
        return $feeds;
    }
    
    // entry point
    $feeds = feeds_array();
    var_dump($feeds);
    

    【讨论】:

    • 现在我得到 Trying to get property of non-object in "echo 'This feed is a ' .$feed->url .' ' .$feed->title;"顺便说一句,结果应该是 100 个项目(提要)的数组,而不是 10 x 10 个项目的数组
    • @DennisSødalChristensen:查看更新。您还需要在feed() 中初始化$feeds
    • :) 感谢您的帮助,它非常接近我所尝试的。当我说您的代码生成 10 x 10 数组时,我读对了吗?试图获得 1 个包含 100 个项目的数组。
    • 啊,这有点不同。好的,那你需要使用array_merge...(查看更新的代码,尤其是feeds_array
    • 谢谢它的工作......现在我要坐下来理解代码(讨厌使用我不理解的代码)。
    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 2011-11-10
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多