2017-03-26 4 views
0

私はcompactを使用して、いくつかの変数から連想配列を作成しています。しかし、compactは、nullの値をスキップしません。コンパクトスキップNULLを作成する

$foo = 'rawr'; 
$ya = $foo === 'foo' ? 'ya' : null; 

print_r(compact('foo', 'ya')); // outputs Array ([foo] => rawr [ya] =>) 

私はまた、設定されていない変数に$屋設定しようとしましたが、それはこのように、同じ与えた:

$NOTSET; 
$foo = 'rawr'; 
$ya = $foo === 'foo' ? 'ya' : $NOTSET; 

print_r(compact('foo', 'ya')); // outputs Array ([foo] => rawr [ya] =>) 

がでスキップされる値に変数を設定するためにとにかくありコンパクト?

+1

[ 'unset'](https://secure.php.net/manual/en/function.unset.php)。 – Siguza

+1

あなたの値を 'unset()'するか、あとであなたの配列をフィルターします。 – Rizier123

+0

@Siguzaいいえ、私は高等学校に就学できませんか? '$ ya = $ foo === 'foo'のように? 'ya':unset($ ya); ' – Noitidart

答えて

2

することはできfilter the arrayそれを圧縮した後:

$foo = 'rawr'; 
$ya = $foo === 'foo' ? 'ya' : null; 

print_r(array_filter(compact('foo', 'ya'))); // outputs Array ([foo] => rawr) 
+0

ありがとうArSenこれは動作し、あまりにも冗長ではありません! – Noitidart

関連する問題