簡體   English   中英

PHP:根據條件獲取數組值

[英]PHP: Get array values based on conditions

我一直在困惑,要根據某些條件獲得正確的值。 首先,讓我們看一下PHP返回的函數var_dump()。 這只是調整我要查找的數據的重要部分。 這里檢查整個json對象

array (size=3)
  0 => 
    array (size=12)
      'inputs' => 
        array (size=2)
          0 => 
            array (size=3)
              'prev_out' => 
                array (size=7)
                  'addr' => string '1AvY95SQqtWy6MKWZbE3Xnqant9F3whfPH' (length=34)
                  'value' => int 1583375
          1 => 
            array (size=3)
              'prev_out' => 
                array (size=7)
                  'addr' => string '1KEUVc2TxDh1VAcvrS5p3PtJHcRwzrvin1' (length=34)
                  'value' => int 150000
      'out' => 
        array (size=2)
          0 => 
            array (size=7)
              'addr' => string '1Djp9h8mR3qqRz6v54nx265b8jZuqYNQ8j' (length=34)
              'value' => int 1046166
          1 => 
            array (size=7)
              'addr' => string '13W7N4NFwpTkYnHuVABcQfdrvDyszDqwkr' (length=34)
              'value' => int 677209

您剛剛看到的是$ data ['txs']的輸出。 外部數組是事務列表。 在每個內部,都指定了詳細信息。 “輸入”和“輸出”的長度可以改變! 我想獲取滿足以下條件的每筆交易的價值($ data ['txs'] [交易索引] ['out'] ['value']):

  1. “退出”事務的值應大於零。
  2. “退出”事務的地址應等於$ address。
  3. $ address不在“輸入”事務中。 例如:$ address不能在所有['inputs'] [count(inputs)] ['inputs'] ['prev_out'] ['addr']的數組中。

這是我最后解決這個問題的嘗試。 問題是,即使地址13W7N4NFwpTkYnHuVABcQfdrvDyszDqwkr存在,$ result仍為空,結果應為677209。

$i = 0;
$txresult = array();    
foreach($data['txs'] as $ct => $cv) {

    $index = count($data['txs'][$i]['inputs']) - 1;
    $addressindex = array();
    for($testindex = 0; $testindex < $index; $testindex++) {
        $addressindex[] = $data['txs'][$i]['inputs'][$index]['prev_out']['addr'];
    }

    $counter = count($data['txs'][$i]['out']) - 1;      
    for($count = 0; $count < $counter; $count++) {
        if ($data['txs'][$i]['out'][$count]['value'] > 0 && $data['txs'][$i]['out'][$count]['addr'] == $address && !in_array($address, $addressindex)) {
            $result = $data['txs'][$i]['out'][$count]['value'];
        }
    }
    $i++;
}

請記住,我削減了代碼的范圍,因此可能有些需要過多更改的建議可能無法正常工作。 我將盡力回答您的問題。

根據我自己的想法解決。 @Wrikken有助於得出結論。

解決方案非常簡單。 只有兩件事:

  • $ i ++不應位於任何for循環中,因此我將其放在foreach循環的末尾。
  • 我必須取消設置$ addressindex,$ counter和$ index。

暫無
暫無

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

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