PHP类更新数组-如何提高效率


PHP Class Updating Array - How to make more efficient

我有下面的代码,我想知道如何编辑它,这样我就可以用一个调用更新具有多个值的数组:

$var->updateArray("Value 1", "Value2", "Value 3", and so on.... );

我目前的代码是:

<?php
class MyClass {
public $myArray = array();
public function updateArray($newValue) {
    $this->myArray[] = $newValue;
}
public function showArray() {
    foreach($this->myArray as $arrayValue) {
        echo "<li>";
        echo $arrayValue;
        echo "</li>";
    }
}
}
$var = new MyClass;
$var->updateArray("Value 1");
$var->updateArray("Value 2");
$var->updateArray("Value 3");
echo $var->showArray();
?>

如果您希望将其他参数作为字符串值传递,只需使用func_get_args;否则,传递一个值数组并对其进行处理。第一个想法可以用这个片段来演示:

    class MyClass {
        public $myArray = array();
        public function updateArray($newValue) {
            $arguments  = func_get_args();
            if($arguments) {
                foreach ($arguments as $argument) {
                    $this->myArray[] = $argument;
                }
            }
        }
        public function showArray() {
            foreach($this->myArray as $arrayValue) {
                echo "<li>";
                echo $arrayValue;
                echo "</li>";
            }
        }
    }
    $var = new MyClass();
    $var->updateArray("Value 1", "Value2", "Value 3");
    $var->showArray();

第二个想法:传递值数组可以通过下面的片段来演示:

    class MyClass {
        public $myArray = array();
        /**
         * UPDATES THE INTERNAL ARRAY USING WHATEVER VALUES PASSED IN AS ARGUMENT(S)
         * IN THIS CASE, YOU COULD PASS AS MANY ARGUMENTS AS YOU WISH AS STRING-VALUES...
         * @param $newValue
         */
        public function updateArray($newValue) {
            $arguments  = func_get_args();
            if($arguments) {
                foreach ($arguments as $argument) {
                    $this->myArray[] = $argument;
                }
            }
        }
        /**
         * UPDATES THE INTERNAL ARRAY USING A COLLECTION: AN ARRAY OF VALUES
         * @param array $collection
         */
        public function updateArrayFromCollection(array $collection) {
            if($collection) {
                foreach ($collection as $value) {
                    $this->myArray[] = $value;
                }
            }
        }
        public function showArray() {
            foreach($this->myArray as $arrayValue) {
                echo "<li>";
                echo $arrayValue;
                echo "</li>";
            }
        }
    }
    $var = new MyClass();
    $var->updateArrayFromCollection(["Value 1", "Value2", "Value 3"]);
    $var->showArray();

您可以使用类似的东西:

public function updateArray() {
    if (func_num_args() > 0) {
        $args = func_get_args();
        foreach ($args as $arg) {
            $this->myArray[] = $arg;
        }
    }
}

我没有尝试代码,所以它可能包含错误。

public function showArray() {
    foreach($this->myArray as $arrayValue) {
        $array_collect[] =  $arrayValue; 
    }
}

然后打印

$array = Implode (',',$array_collect);
echo $array; 

根据Implode函数排列集合