如何使用面向对象的php迭代for循环

如何使用面向对象的php迭代for循环,php,Php,如何使用oop迭代for循环 $myobj = new number_ series_ class(10); $myobj->print_number(); 输出是这样的 输出 1-2-3-4-5-6-7-8-9-10你的问题不清楚,但你想要这个吗 class number_series_class{ private $index; function number_series_class($num){ $this->index = $num; } fun

如何使用oop迭代for循环

$myobj = new number_ series_ class(10);
$myobj->print_number();
输出是这样的

输出
1-2-3-4-5-6-7-8-9-10

你的问题不清楚,但你想要这个吗

class number_series_class{
  private $index; 
  function number_series_class($num){
    $this->index = $num;
  }
  function print_number(){
    for ($i=1; $i <=$this->index; $i++) { 
      if($i!=$this->index) echo $i.'-';
      else echo $i;
    }
  }
}

$myobj = new number_series_class(10);
$myobj->print_number();
类别编号\u系列\u类别{
私人美元指数;
函数编号\u系列\u类($num){
$this->index=$num;
}
函数打印_编号(){
对于($i=1;$i索引;$i++){
如果($i!=$this->index)回显$i.-';
否则,我将支付$i ;;
}
}
}
$myobj=新编号系列类别(10);
$myobj->print_number();
试试这个

class number_series_class
{
    public $num;

     function __construct($number)
     {
       $this->num = $number;
     }

     function print_number()
     {
        $arr_temp = array();
        for($i=1; $i<=$this->num; $i++)
        {
            $arr_temp[] = $i;
        }
        echo implode("-", $arr_temp);
     }
}

$myobj = new number_series_class(10);
$myobj->print_number(); // output :  1-2-3-4-5-6-7-8-9-10

$myobj2 = new number_series_class(5);
$myobj2->print_number(); // output :  1-2-3-4-5
类别编号\u系列\u类别
{
公费$num;
函数构造($number)
{
$this->num=$number;
}
函数打印_编号()
{
$arr_temp=array();
对于($i=1;$inum;$i++)
{
$arr_temp[]=$i;
}
回波内爆(“-”,$arr_temp);
}
}
$myobj=新编号系列类别(10);
$myobj->print_number();//输出:1-2-3-4-5-6-7-8-9-10
$myobj2=新编号系列类别(5);
$myobj2->打印_编号();//输出:1-2-3-4-5

您的问题不是特别清楚,但我认为您可能想看看PHP SPL中的迭代器接口:

有很多可供选择,其中提供的功能略有不同。最简单的方法就是迭代器,它允许您在对象上使用
foreach

我将稍微调整一下您的示例,并说您有一个名为NumberSeries的类,如下所示:

class NumberSeries implements Iterator
{
    private $position = 0;
    private $array = array();

    public function __construct($max)
    {
        if ( !is_integer($max) || $max < 1 ) {
            throw new Exception('You must supply a positive integer!');
        }
        $this->array = range(1, $max);
        $this->position = 0;
    }

    function rewind() {
        $this->position = 0;
    }

    function current() {
        return $this->array[$this->position];
    }

    function key() {
        return $this->position;
    }

    function next() {
        ++$this->position;
    }

    function valid() {
        return isset($this->array[$this->position]);
    }

    function getNumberString() {
        return implode('-', $this->array);
    }
}
$number_series = new NumberSeries(10);
foreach ( $number_series as $number ) {
    print $number;
}
print $number_series->getNumberString();
function xrange($start, $limit, $step = 1) {
    if ($start < $limit) {
        if ($step <= 0) {
            throw new LogicException('Step must be +ve');
        }

        for ($i = $start; $i <= $limit; $i += $step) {
            yield $i;
        }
    } else {
        if ($step >= 0) {
            throw new LogicException('Step must be -ve');
        }

        for ($i = $start; $i >= $limit; $i += $step) {
            yield $i;
        }
    }
}
$number_range = xrange(1, 10);
foreach ( $number_range as $number ) {
    print $number;
}
使用生成器可能比坚持面向对象更好。事实上,生成器上的PHP文档可以提供您想要的输出:

正如您希望看到的,您可以像这样实现“xrange”生成器:

class NumberSeries implements Iterator
{
    private $position = 0;
    private $array = array();

    public function __construct($max)
    {
        if ( !is_integer($max) || $max < 1 ) {
            throw new Exception('You must supply a positive integer!');
        }
        $this->array = range(1, $max);
        $this->position = 0;
    }

    function rewind() {
        $this->position = 0;
    }

    function current() {
        return $this->array[$this->position];
    }

    function key() {
        return $this->position;
    }

    function next() {
        ++$this->position;
    }

    function valid() {
        return isset($this->array[$this->position]);
    }

    function getNumberString() {
        return implode('-', $this->array);
    }
}
$number_series = new NumberSeries(10);
foreach ( $number_series as $number ) {
    print $number;
}
print $number_series->getNumberString();
function xrange($start, $limit, $step = 1) {
    if ($start < $limit) {
        if ($step <= 0) {
            throw new LogicException('Step must be +ve');
        }

        for ($i = $start; $i <= $limit; $i += $step) {
            yield $i;
        }
    } else {
        if ($step >= 0) {
            throw new LogicException('Step must be -ve');
        }

        for ($i = $start; $i >= $limit; $i += $step) {
            yield $i;
        }
    }
}
$number_range = xrange(1, 10);
foreach ( $number_range as $number ) {
    print $number;
}

请注意,您要求的确切输出要像这样做有点棘手,因为生成器对象(从xrange返回的对象)不是数组,并且您不能仅对它们调用“内爆('-',$array)”。

您得到了什么输出?你的预期结果是什么?我的预期结果是1-2-3-4-5-6-7-8-9-10使用for循环如何实现?你得到了什么?循环什么?发布你的
数字系列类的代码和
打印数字()方法。如果这是一个练习,你至少应该尝试一些东西。是的,谢谢这是结果对不起我的坏问题,我仍然没有谢谢先生@Adesh Pandeynop buddy!享受你的发展之旅:)谢谢你的回答,这是正确的。很抱歉,我的noob问题还在学习中,谢谢Rizwan Shamsher Kaim爵士。