2017-05-18 12 views
2

空の文字列をすべてnullに変換します。array_walk_recursiveを使用しましたが、私がここで間違ったことを理解するのを助けてください。は、ヌル値をlaravelの空の文字列に変換します。5.4

protected function setData($key, $value) 
{ 
    $this->data[$key] = $value; 
    array_walk_recursive($this->data, function (&$item, $key) { 
     $item = null === $item ? '' : $item; 
    }); 
    return $this->data; 
} 
+0

「$ item =!is_null($ item)? $ item: ''; ' – Ohgodwhy

+0

も動作しません。 –

+0

if($ item === NULL){ $ item =' '; } – Exprator

答えて

1

だけでなく、それは我々が常に雄弁オブジェクトをもたらし、ここで私はので、私はこのようlaravelで->toArray()方法を使用して説得力のあるオブジェクトから配列に変換する必要が渡す前array_walk_recursive内の雄弁なオブジェクトを渡している得る雄弁でちょうどランプ間違いです。ユーザコントローラ内部の

$this->setData("friendList", $loadFriends->friends->toArray()); 

そしてarray_walk_recursiveが動作します。

protected function setData($key, $value) 
{ 
    array_walk_recursive($value, function (&$item, $key) { 
     $item = null === $item ? '' : $item; 
    }); 
    $this->data[$key] = $value; 
    return $this->data; 
} 
+0

私のために働いた。ありがとう – Neo

+0

私の喜び。 :) –

0
class InputCleanup 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     $input = $request->input(); 

     array_walk_recursive($input, function(&$value) { 

      if (is_string($value)) { 
       $value = StringHelper::trimNull($value); 
      } 
     }); 

     $request->replace($input); 

     return $next($request); 
    } 
} 
0

次のようにあなたのarray_walk_recursive()方法を変更する必要があります。

array_walk_recursive($input, function($i) use (&$output) { 
    $output[] = is_null($i)? '': $i; 
}); 
var_dump($output); 

$outputには、必要な結果が含まれています。 returnそれを行うこともできますし、何をしてもかまいません。

注:array_walk()の場合は、$inputを連想配列ではなく代わりに使用できます。

関連する問題