簡體   English   中英

從PHP中的多維數組中選擇值

[英]selected values from multidimensional array in php

我有以下數組:

Array
(
[0] =Array(
        [date] =2016-09-16
        [data] = Array(
                [0] =Array
                    (
                        [ID] =1945
                        [Debit] =CREDIT
                        [timestamp] =1474025139
                        [LastName] =test1
                        [FirstName] =test1

                    )

                [1] =Array
                    (
                        [ID] =1946
                        [Debit] =CREDIT
                        [timestamp] =1474025140
                        [LastName] =test2
                        [FirstName] =test2
                    )
               [2] =Array
                    (
                        [ID] =1947
                        [Debit] =CREDIT
                        [timestamp] =1474025130
                        [LastName] =test3
                        [FirstName] =test3
                    )
            )
        [start_date] =2016-09-16
        [end_date] =2016-09-16
        [show_fee] =0
    )

[1] =Array
    (
        [date] =2016-09-15
        [data] = Array
            (
                [0] =Array
                    (
                        [ID] =1955
                        [Debit] =CREDIT
                        [timestamp] =1474025159
                        [LastName] =test11
                        [FirstName] =test11

                    )

                [1] =Array
                    (
                        [ID] =1956
                        [Debit] =CREDIT
                        [timestamp] =1474025150
                        [LastName] =test22
                        [FirstName] =test22
                    )
               [2] =Array
                    (
                        [ID] =1957
                        [Debit] =CREDIT
                        [timestamp] =1474025150
                        [LastName] =test33
                        [FirstName] =test33
                    )
            )
        [start_date] =2016-09-16
        [end_date] =2016-09-16
        [show_fee] =0
    )

)

現在我想用特定的鍵從上面的數組中過濾一個數組。 例如,我想要時間戳和id。 我們可以假設id / timestampd是關鍵,反之亦然。

我嘗試了array_column但沒有成功。

確定您確切需要的輸出是不容易的。
一般原則可以假設以下規則適用:

  • 輸出層次結構必須與輸入之一相同
  • idtimestamp鍵值是出現在子數組中的唯一鍵值
  • 其他任何子數組(即不存在搜索到的鍵的位置)都不會更改

基於這些規則,這是一種通用解決方案,它適用於任何結構(尤其是與出現搜索鍵的深度級別無關):

function select($input) {
  $keys = ['ID', 'timestamp'];
  return is_array($input)
    ? (array_keys($intersect = array_intersect_key($input, array_flip($keys))) == $keys
      ? $intersect
      : array_map('select', $input)
    )
    : $input;
}
$output = select($input);

(已測試的)函數使用以下方法:

  • 對於給定的$input ,如果它不是數組,則按原樣返回
  • 否則,在$input查找搜索的鍵,然后:
    • 如果它們都存在(這是一個任意選擇,可以用“如果至少有一個存在”代替),則僅返回它們
    • 否則返回通過遞歸調用函數為其每個項目映射的$input

暫無
暫無

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

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