バックグラウンド:
あるテーブルから情報を取得し、それが 2 番目のテーブルに存在するかどうかを確認し、存在しない場合は情報を挿入するメソッドを作成しています。データを比較する際、チェックではまず名前が一致するかどうかを確認し、次に口座番号が対応する名前と一致するかどうかを確認する必要があります。このコードには多くのコメントが付けられているため、段階的なプロセスに従うこともできます。stackexchange の達人がテーブルにもたらしてくれたすべての支援に大いに感謝しているので、しばらく頭を悩ませた後、私の問題をテーブルに持ち込んでいます。
一致する名前が存在するにもかかわらず、アカウント番号を確認しようとするとコードが壊れているようです。私の最高のスキルによると、すべてのコードは完全に機能するはずです。
all_validation_names の print_f と all_validation_accounts を見ればわかるように、最初に通過したステートメントの情報がチェック付きの配列に含まれています。
私の質問は次のとおりです。対応するキー ($check_account_number) を持つ配列に格納された varchar 変数を in_array に渡すことができないのはなぜですか。この関数は常に else を返します。変数は "1" ですが、$all_validation_accounts の対応するキーを使用しても見つかりません。
助けてください!
スクリプト処理のコード
if (in_array($check_agency_name,$all_validation_names))
{
//Set a marker for the key index on which row the name was found
$array_key= array_search($check_agency_name, $all_validation_names);
//Now check if the account corresponds to the right account name
if (in_array($check_account_number,$all_validation_accounts["$array_key"]))
//NOTE: i've even tried strict comparison using third parameter true
{
//Bounce Them If the Account Matches with a name So theres no duplicate entry (works)
}
//If the account doesn't correspond to the right account name, enter the information
else
//ALSO DOESNT WORK: if (!(in_array($check_account_number,$all_validation_accounts["$array_key"])))
{
// The account doesn't exist for the name, so enter the information
//CODE TO ENTER INFORMATION THEN BOUNCE (works)
break;
}
}
出力:
一致する名前を渡す: a およびアカウント:1
アカウントが存在するため、すべての検証配列を以下に示します: all_validation_names: Array ( [0] => a [1] => a [2] => b )
すべての検証アカウント: 配列 ( [0] => 1 [1] => 2 [2] => 2 )
システムは配列 all_validation_names で check_agency_name を見つけたので、次のキーで口座番号を確認してみましょう: 0
アカウント名は存在しましたが、システムはアカウント番号の一致を見つけられなかったため、アカウントが存在しないかのように入力する必要があります
入力する必要がある情報は次のとおりです: used_selector: 0 Agency_name:A address: city: state: zip: account_number: 1
システムは情報を入力し、クライアントをバウンスする必要があります