如何使用oop
迭代循环$myobj = new number_ series_ class(10);
$myobj->print_number();
,输出就是这个
输出
1-2-3-4-5-6-7-8-9-10
答案 0 :(得分:1)
你的问题不明确,但你想要这个吗?
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();
答案 1 :(得分:1)
试试这个
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
答案 2 :(得分:1)
<?php
class number_series_class {
public $var ;
function __construct($var) {
$this->var = $var ;
}
function print_number() {
$j = '';
for($i=1; $i<=$this->var; $i++) {
if($i == 10) {
$j .= $i;
}
else {
$j .= $i."-";
}
}
return $j ;
}
}
$ob = new number_series_class(10);
echo $ob->print_number();
?>
答案 3 :(得分:1)
你的问题不是特别清楚,但我想你可能想看一下PHP SPL中的Iterator接口:
http://www.php.net/manual/en/spl.iterators.php
有很多可供选择的产品提供略有不同的功能。最简单的就是调用Iterator,它允许你在对象上使用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();
可能甚至更好而不是坚持面向对象是使用生成器。事实上,关于生成器的PHP文档可以为您提供所需的输出:
http://www.php.net/manual/en/language.generators.overview.php
正如您可以看到的那样,您可以像这样实现“xrange”生成器:
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返回的内容)不是数组,你不能只调用“implode(' - ',$ array)“就在他们身上。