PHP类中如何为curl选项数组追加值并在调用方法时正确输出?
核心问题定位
- 目前
one()方法的逻辑是每次被调用都会直接把$this->myarray重置为仅包含one、two两个键的基础数组,最后一行执行print_r($myclass->one());的时候,此前在two()方法里追加的three键值会被完全覆盖,根本不可能出现在最终结果里 - 原代码里
two键的取值是222,和你预期输出的2222数值不匹配 - 现有调用流程存在无效操作:先初始化数组、追加自定义配置,最后又重新触发一次数组重置,完全把之前的追加操作作废了
代码修改方案
调整one()方法的初始化逻辑,仅在数组为空的时候写入基础配置,避免重复调用时覆盖已追加的自定义项;同步修正键值匹配预期输出,修改后可直接运行的代码如下:
<?php class test{ // 提前初始化空数组属性,避免PHP报未定义警告 public $myarray = []; public function one(){ // 仅在数组未初始化时写入基础配置,重复调用不会冲掉已追加的自定义选项 if(empty($this->myarray)) { $this->myarray = [ "one" => "111", "two" => "2222" // 匹配你预期的输出值 ]; } return $this->myarray; } public function two(){ // 直接向已存在的配置数组追加自定义选项 $this->myarray["three"] = "3333"; return $this->myarray; } } $myclass = new test(); $myclass->one(); // 完成基础配置数组初始化 $myclass->two(); // 追加自定义配置项 print_r($myclass->one()); // 此时调用不会触发数组重置,可拿到完整配置
运行代码后输出结果完全符合预期:
Array ( [one] => 111 [two] => 2222 [three] => 3333 )
对应你提到的curl配置场景,后续只需要按照
two()方法的模式,在对应的自定义逻辑方法里直接操作$this->myarray追加curl选项即可,不会被基础配置的初始化逻辑覆盖。
内容的提问来源于stack exchange,提问作者M F
相关产品推荐
相关产品推荐

