簡體   English   中英

在PHP中有效訪問WP cron多維數組

[英]Accessing WP cron multidimensional array efficiently in PHP

我需要訪問多個數組,問題出在當我到達如下所示的所需數組時,我無法以傳統方式訪問它,因為密鑰每次都不同。

我正在處理以下數組:

Array
(
    [oe_schedule_charge] => Array
        (
            [617cdb2797153d6fbb03536d429a525b] => Array
                (
                    [schedule] => 
                    [args] => Array
                        (
                            [0] => Array
                                (
                                    [id] => cus_2OPctP95LW8smv
                                    [amount] => 12
                                )

                        )

                )

        )

)

這些數組將有數百個,我需要一種有效訪問其中的數據的方法。 我正在使用以下代碼,並具有預期的輸出:

function printValuesByKey($array, $key) {
    if (!is_array($array)) return;
    if (isset($array[$key])) 
        echo $key .': '. $array[$key] .'<br>';
    else
        foreach ($array as $v)
            printValuesByKey($v, $key);
}

$cron = _get_cron_array();

foreach( $cron as $time => $hook ) {
    if (array_key_exists('oe_schedule_charge', $hook)) {
        echo '<div>';
        echo date('D F d Y', $time);
        echo printValuesByKey($hook, 'amount');
        echo printValuesByKey($hook, 'id');
        echo '</div>';
    }
}

但是我從來不需要處理這么多數據,因此我想采取適當的預防措施。 任何以有效方式訪問多維數組所能散發出的光,將不勝感激。

我會考慮將其加載到對象中,然后編寫成員函數以獲取所需的內容。

class myclass { 

private $_uniqueKey;
private $_schedule;
private $_args = array();

private $_amount = array();
private $_id = array();

public function __construct($arrayThing)
{
    foreach($arrayThing['oe_schedule_charge'] as $uniqueKey => $dataArray)
    {
        $this->_uniqueKey = $uniqueKey;
        $this->_schedule = $dataArray['schedule'];
        $this->_args = $dataArray['args'];
    }
    $this->_afterConstruct();
}

private function _afterConstruct()
{
    foreach($this->_args as $argItem)
    {
        if(isset($argItem['amount']) && isset($argItem['id']))
        {
            $this->_amount[] = $argItem['amount'];
            $this->_id[] = $argItem['id'];
        }
    }
}

public function getUniqueKey()
{
    return $this->_uniqueKey;
}

public function getSchedule()
{
    return $this->_schedule;
}

public function getArgs()
{
    return $this->_args;
}

public function printShitOut($time)
{
    //You define this. But if you do a print_r( on the object, it will tell you all the items you need. )

}

//code would be like this:

$cron = _get_cron_array();

foreach( $cron as $time => $hook ) 
{
    $obj = new myclass($hook);
    $obj->printShitOut($time);
}

暫無
暫無

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

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