我正在尋找一種簡短的內置方法來從 PHP 中的多維數組的值(我對數組鍵不感興趣)中獲取平面數組。是否有任何內置函數可以從多維數組中獲取元素數組(不是數組)?我搜索了 array_flat 或類似的關鍵字,但一無所獲。盡管我正在尋找一種在 PHP 中獲取平面數組的有效方法,但我真正想要的是按以下方式使用 array_filter:方式。$result = array_filter($array, '!is_array')或者可能:$result = array_filter($array, 'is_array === false')但是,上面的代碼不起作用。以下解決方案有效,但它們不是我想要的。第一個解決方案:$result = array_diff(array_values($array), array_filter(array_values($array), 'is_array'));第二種解決方案:$result = (array_filter(array_values($args), function($value) { if(!is_array($value)) { return $value; }}));;我也可以嘗試使用foreachor array_map,但我想編寫更少的代碼。為什么是這樣?基本上,為了幫助我進行文件上傳和表單驗證,我正在構建一個名為 Validator 的類,它將接受回調(我想要的數量)并執行??梢栽隍炞C之前、驗證期間和驗證之后傳遞回調以運行。這些是主要的回調;對于每個主回調,如果主回調失敗,可以傳遞一個“onfailure”回調來運行,如果成功則傳遞一個“onsuccess”回調。Validator 類在添加函數時將非常靈活并且可以自定義其參數,因此我需要創建一個稍微復雜的代碼來查找哪個參數是哪個。參數可能有嵌套數組,這就是為什么我想要一種有效的方法來展平嵌套數組。我的 Validtor 類的 addCallback 方法將能夠接收以下參數: 'aftervalidation', $callback, $args ['onvalidation', 'callback' => $callback, 'args' => $args] ['onvalidation', [callback => $callback, 'args' => $args], ] ['onvalidation', [$callback, 'args' => $args], ['onsuccess' => $callback, 'args'=> args]] ['aftervalidation', ['callback', 'args' => $args], ['onsuccess' => $callback, $args]] ['beforevalidation', ['callback;, 'args' => $args], ['onsuccess' => $callback,]] ['aftervalidation', [$callback, 'args' => $args], ['onsuccess' => $callback', 'args' => args]] ['onvalidation', ['callback' => $callback, 'args' => $args], ['onsuccess' => $callback', $args]]除了這些嵌套數組,$args 可能是回調的 args 數組。所以我需要對這些數組進行展平以找出哪些參數是哪些。注意:出于個人原因,無法為其創建自定義函數。PHP 版本是 7.3
2 回答

千萬里不及你
TA貢獻1784條經驗 獲得超9個贊
不推薦作為它的加注通知,但您可以使用array-keys和array-flip(添加@
以避免通知)作為:
$a = @array_keys(array_flip($arr));
這將像array_flip
遇到通知一樣工作,因為數組不能是鍵 -> 所以它實際上過濾了非數組 - 但這不是最佳實踐!我建議您編寫自定義函數 - 不明白為什么不能這樣做......
現場示例:3v4l
- 2 回答
- 0 關注
- 203 瀏覽
添加回答
舉報
0/150
提交
取消