douhan5853 2016-03-10 19:49
浏览 30
已采纳

数组成员不会保存

i learn php and stuck in trouble with next code:

    $people = new people();
    $people->getByNumber($value[0]);    
    $peoples = array();
    $count_people = 5;
    for($i=1; $i<=$count_people; $i++)
    {
        $people->getByNumber($i);
        $peoples[$i] = $people;
        print_r($peoples[$i]);
    }
    print_r($peoples);

so after cycle "for" $peoples dont show any information and print_r tell, that array consist of empty values (but keys exists). While cycle work, inside it print_r show me right pair key->value. How can i repair it to use right $peoples after cycle?

upd: in for-loop by print_r($peoples[$i]); i can see that:

people Object
 (
    [id] =&gt; 1
    [age] =&gt; 19
    [short_name] =&gt; Jhon
    [full_name] =&gt; Jhon Persh
    [image] =&gt; 
 )

but after for-loop $peoples contains only:

Array
(
    [1] =&gt; people Object
        (
            [id] =&gt; 
        [age] =&gt; 
        [short_name] =&gt; 
        [full_name] =&gt; 
        [image] =&gt; 
        )

    [2] =&gt; people Object
        (
            [id] =&gt; 
        [age] =&gt; 
        [short_name] =&gt; 
        [full_name] =&gt; 
        [image] =&gt;  
        )

    [3] =&gt; people Object
        (
            [id] =&gt; 
        [age] =&gt; 
        [short_name] =&gt; 
        [full_name] =&gt; 
        [image] =&gt; 
        )

    [4] =&gt; people Object
        (
            [id] =&gt;
        [age] =&gt; 
        [short_name] =&gt; 
        [full_name] =&gt; 
        [image] =&gt;  
        )

    [5] =&gt; people Object
        (
          [id] =&gt; 
          [age] =&gt; 
          [short_name] =&gt; 
          [full_name] =&gt; 
          [image] =&gt; 
        )

)

upd2:

public function getByNumber($id)
    {
        $classProperty = get_object_vars($this);
        foreach ($classProperty as $key=>$value)
            $member[] = $key;

        $data = //random data generation;
        foreach ($member as $key =>$field)
        {
            $this->$field = $data[$field];
        }
    }
  • 写回答

2条回答 默认 最新

  • duanchi1230 2016-03-19 19:44
    关注

    I found answer in construcnt new object of class $people1 = new People(), then just use $peoples[] = $people1 in loop after call method getByNumber($id); btw dont know why copy constructor dont call itself.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测