代码之家  ›  专栏  ›  技术社区  ›  user6818018

在面向对象php中,从foreach循环中的数组重新赋值

  •  0
  • user6818018  · 技术社区  · 7 年前

    在我的公共函数中,我创建了一个具有两个值type和id的数组:

    public function easypost_database()
            {
    
                \EasyPost\EasyPost::setApiKey('mykey');
                $cas = \EasyPost\CarrierAccount::all();
                foreach ($cas as $key => $value) {
                    $this->services[] = array('type' => $value['type'],
                      'id'   => $value['id']
                  );
                }
    
            }
    

    我的数组如下所示:

    Array
    (
        [0] => Array
            (
                [type] => CanadaPostAccount
                [id] => myidcp0
            )
    
        [1] => Array
            (
                [type] => PurolatorAccount
                [id] => myidp0
            )
    
    )
    

    现在在我的另一个函数中,我想提取这些值并回显它们(实际上我想在下拉列表中插入这些值,但是为了这个问题,让我们假设我将回显它们)。

    因此,我的另一个函数如下所示:

    public function settings_form($current)
    {
        $database = $this->easypost_database();
        $services_a = $this->services;
    
        foreach ($services_a as $key => $value) {
    
            foreach ($value['type'] as $key => $val) {
                print_r($val)
            }
        }
    }
    

    由于某种原因,我无法打印数组,因为该数组返回空值(或仅返回数组的第一个值)。

    我可以创建一个数组并将我的值推到foreach循环之外,但我正在寻找一种更优雅的方法来处理我的代码。

    更新时间:

    我总是可以这样做:

    $services_a   = $this->services;
    
            $service_type = array();
    
            foreach ($services_a as $key => $value) {
                array_push($service_type, $value['type']);
            }
    
            foreach ($service_type as $val) {
                $s .= $this->formDropdown('service[]', $val, $this->settings['service']) . '&nbsp;' . $val . '<br>';
            }
    

    但我在找一条更短的路。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Yamu    7 年前

    尝试以下操作:

    public function settings_form($current)
    {
        $database = $this->easypost_database();
        $services_a = $this->services;
    
        foreach ($services_a as $key => $value) {
    
            foreach ($value as $key => $val) {
                if( $key == 'type' ){
                    print_r($val);
                }
            }
        }
    }