0

私がやろうとしていること:

複数選択入力からのPOSTデータをarray_diff()関数で処理します

初期コード:

$relations_to_delete=array_diff($selectedEnjeuxMetiers,$this->request->data['EnjeuxMembership']['EnjeuxMetier']);

Probem:複数選択入力で何も選択されていない場合は機能しませんでした

現在の解決策:

  if(!empty($this->request->data['EnjeuxMembership']['EnjeuxMetier'])){
        $relations_to_delete=array_diff($selectedEnjeuxMetiers,$this->request->data['EnjeuxMembership']['EnjeuxMetier']);
                                                         
   }else{
            $relations_to_delete=$selectedEnjeuxMetiers;
   }

このソリューションは機能します。!= nullが機能せず、gettype()== "array"

質問: if(!empty())テストが必要な理由と、問題がPOSTデータまたはarray_diff関数に起因するのかどうかを誰かが説明できますか?

編集:gettype()=="array"で動作します。問題は、データがない場合の型が空の配列ではなく、空の文字列であるということでした。

追加情報: Postデータを配列に変換する方法に関するCakePHPドキュメント。

4

2 に答える 2

0

関数 "empty()" を使用すると、次の場合、変数は空と見なされます。

  • "" (空の文字列)
  • 0 (整数としての 0)
  • "0" (文字列としての 0)
  • ヌル
  • 間違い
  • array() (空の配列)
  • var $var; (変数は宣言されていますが、クラスには値がありません)

オプションが選択されていない場合、値は "" または NULL になります。

于 2012-08-13T13:28:30.370 に答える
0

問題は、データがないときの型が空の配列ではなく、空の文字列になることでした。

于 2012-08-13T13:35:44.973 に答える