簡體   English   中英

在面向對象的php中的foreach循環中從數組重新分配值

[英]Reassign value from an array in a foreach loop in object oriented php

在我的公共函數中,我創建了一個具有兩個值的數組,分別是類型和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>';
        }

但是我正在尋找更短的方法。

嘗試這個:

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);
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM