第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP:如何使用Array_filter()來過濾數(shù)組鍵?

PHP:如何使用Array_filter()來過濾數(shù)組鍵?

PHP
手掌心 2019-07-22 15:16:41
PHP:如何使用Array_filter()來過濾數(shù)組鍵?中的回調(diào)函數(shù)array_filter()只傳遞數(shù)組的值,而不是鍵。如果我有:$my_array = array("foo" => 1, "hello" => "world");$allowed = array("foo", "bar");刪除所有鍵的最佳方法是什么$my_array不在$allowed陣列?期望產(chǎn)出:$my_array = array("foo" => 1);
查看完整描述

3 回答

?
胡子哥哥

TA貢獻1825條經(jīng)驗 獲得超6個贊

PHP 5.6引入了第三個參數(shù)array_filter()flag,您可以設(shè)置為ARRAY_FILTER_USE_KEY按鍵而不是值過濾:

$my_array = ['foo' => 1, 'hello' => 'world'];$allowed  = ['foo', 'bar'];$filtered = array_filter(
    $my_array,
    function ($key) use ($allowed) {
        return in_array($key, $allowed);
    },
    ARRAY_FILTER_USE_KEY);

顯然這不像array_intersect_key($my_array, array_flip($allowed)),但它確實提供了對密鑰執(zhí)行任意測試的額外靈活性。$allowed可以包含regex模式而不是普通字符串。

您也可以使用ARRAY_FILTER_USE_BOTH將值和鍵傳遞給篩選函數(shù)。下面是一個基于第一個示例的人為示例,但請注意,我不建議使用$allowed這樣:

$my_array = ['foo' => 1, 'bar' => 'baz', 'hello' => 'wld'];$allowed  = ['foo' => true, 'bar' => true, 'hello' => 'world'];$filtered = array_filter(
    $my_array,
    function ($val, $key) use ($allowed) { // N.b. $val, $key not $key, $val
        return isset($allowed[$key]) && (
            $allowed[$key] === true || $allowed[$key] === $val        );
    },
    ARRAY_FILTER_USE_BOTH); // ['foo' => 1, 'bar' => 'baz']


查看完整回答
反對 回復(fù) 2019-07-22
?
慕斯王

TA貢獻1864條經(jīng)驗 獲得超2個贊

帶著array_intersect_keyarray_flip:

var_dump(array_intersect_key($my_array, array_flip($allowed)));array(1) {
  ["foo"]=>
  int(1)}


查看完整回答
反對 回復(fù) 2019-07-22
?
隔江千里

TA貢獻1906條經(jīng)驗 獲得超10個贊

我需要做同樣的事,但有一個更復(fù)雜的array_filter在鑰匙上。

這是我是如何做到的,使用了類似的方法。

// Filter out array elements with keys shorter than 4 characters$a = array(
  0      => "val 0", 
  "one"  => "val one", 
  "two"  => "val two", 
  "three"=> "val three", 
  "four" => "val four", 
  "five" => "val five", 
  "6"    => "val 6"); $f = array_filter(array_keys($a), function ($k){ return strlen($k)>=4; }); $b = array_intersect_key($a, array_flip($f));print_r($b);

這將輸出結(jié)果:

Array(
    [three] => val three    [four] => val four    [five] => val five)


查看完整回答
反對 回復(fù) 2019-07-22
  • 3 回答
  • 0 關(guān)注
  • 848 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號