![](/img/trans.png)
[英]php Update multidimensional array based on values from another multidimensional array
[英]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但沒有成功。
確定您確切需要的輸出是不容易的。
一般原則可以假設以下規則適用:
id
和timestamp
鍵值是出現在子數組中的唯一鍵值 基於這些規則,這是一種通用解決方案,它適用於任何結構(尤其是與出現搜索鍵的深度級別無關):
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.