2017-04-23 4 views
2

が、私は私の更新方法で交差しています文句を言わない交差しています。何でもうまく動作します(偽、1など)Laravelは入力

ヒント?

ありがとうございます!別の実装に移動してintersect()方法を使用して停止する

+0

配列全体が空である( 'message'、' name'、 'email'のキーなし)か、' is_read'キーだけが欠落していますか? – LombaX

+0

@LombaX on isread – user3844579

答えて

2

ALERT てみてください、それはLaravelの将来のバージョンから削除されます:あなたはis_readキーは、最終的な配列(から欠落していることを意味したIF Link

配列全体が空ではない、私のコメントを参照)、これはintersect()メソッドの実装のためです。

intersectメソッドは、Illuminate\Http\Requestクラスのonly()メソッドを単にラップし、結果としてarray_filterを実行します。

これは実装です:$results

で、この時点で

STEP1

$results = $request->only('message','name','email','is_read'); 

:あなたのケースでは

/** 
* Intersect an array of items with the input data. 
* 
* @param array|mixed $keys 
* @return array 
*/ 
public function intersect($keys) 
{ 
    return array_filter($this->only(is_array($keys) ? $keys : func_get_args())); 
} 

、我々はこのようなコードを分解することができます

Array 
(
    [message] => message 
    [name] => name 
    [email] => email 
    [is_read] => 0 
) 

しかし、STEP2

STEP2で

$filteredResults = array_filter($results); 

結果は

Array 
(
    [message] => message 
    [name] => name 
    [email] => email 
) 

になり、これはどのようにarray_filter作品です。これは、配列を最初のパラメータとして、次にオプションのコールバック(配列のフィルタリングに使用)とフラグを期待します。コールバックが(この場合のように?)が提供されていない場合はどうなりphp reference

から

コールバックが指定されていない場合は、FALSEに等しい配列(converting to booleanを参照)のすべてのエントリが削除されます。

converting to booleanを見ると、0(ゼロ)はFALSEとみなされ、そのために配列から削除されます。

+0

ありがとうございます。詳細な説明をいただきありがとうございます。私はコードを更新しました.0の代わりに、私は文字列としてfalseを返し、それをブール値falseに変換して、そのように動作します – user3844579

関連する問題