我試圖在 milti 陣列的陣列中找到一個值,找到它后,我想回傳一個不同的鍵,不知道如何進一步解釋。
我有一個陣列:
tempArray( [0] => Array
(
[id] => 18460
[field_id] => 14
[parent_id] => 165
[custom_tab_field_id] => 17775
[status] => 0
[field_type] => 0
)
[1] => Array
(
[id] => 18461
[field_id] => 2
[parent_id] => 165
[custom_tab_field_id] => 17776
[status] => 0
[field_type] => 2
)
[2] => Array
(
[id] => 18462
[field_id] => 12
[parent_id] => 165
[custom_tab_field_id] => 17777
[status] => 2
[field_type] => 2
))
我試圖通過 [custom_tab_field_id] 找到陣列,并回傳當前的陣列 [status]。
我創建了一個應該做到這一點的函式,但它總是回傳 0。
功能:
function searchForStatus($id, $array){
$returnedStatus = "0";
foreach ($array as $key => $val){
if ($val['custom_tab_field_id'] == $id){
return $returnedStatus = $array[$key]['status'];
}
}
return $returnedStatus;
}
然后簡單地通過傳遞值來呼叫函式
$returnedStatus = searchForStatus($field['custom_tab_field_id'], $tempArr);
uj5u.com熱心網友回復:
有了array_column函式,這個問題就可以輕松解決,非常通用。
$array = [
['id' => 18460, 'field_id' => 14, 'parent_id' => 165, 'custom_tab_field_id' => 17775, 'status' => 0, 'field_type' => 0],
['id' => 18460, 'field_id' => 2, 'parent_id' => 165, 'custom_tab_field_id' => 17776, 'status' => 0, 'field_type' => 2],
['id' => 18460, 'field_id' => 14, 'parent_id' => 165, 'custom_tab_field_id' => 17777, 'status' => 2, 'field_type' => 2],
];
$findKey = 'custom_tab_field_id';
$getKey = 'status';
$findVal = 17777;
$arrKeyValue = array_column($array,$getKey,$findKey);
$status = $arrKeyValue[$findVal]; //2
該解決方案不包含錯誤處理,僅顯示原理。$arrKeyValue 是一個陣列如何:
array (
17775 => 0,
17776 => 0,
17777 => 2,
)
在https://3v4l.org/SnVM4上嘗試自我
uj5u.com熱心網友回復:
你可以使用array-filter函式來解決它。IE
$a1 = [
['id' => 1, 'status', 'active'],
['id' => 2, 'status', 'in-active']
];
$search = 2;
print_r(array_filter($a1, function ($object) use ($search) {
return $object['id'] == $search;
}));
它將從與searchid 匹配的陣列中回傳整個陣列。
你也可以為此撰寫一個函式
function search($data, $searchValue, $searchField, $returnField) {
$filter = array_filter($data, function ($object) use ($searchValue, $searchField) {
return $object[$searchField] == $searchValue;
});
return count($filter) > 0 ? $filter[0][$returnField] : null;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/460075.html
下一篇:洗掉購物車中的專案(陣列)php
