1

次のような csv ファイルの値を格納する連想配列がある場合:

$file_users = fopen("Users.csv", "r");
while (($record = fgetcsv($file_users, 1024, ',""')) !== FALSE){
        $users[]= array($record[0] => $record[2].$record[3]);
}

record[0]、record[2]、および record[3] は、行ごとの列の値です。

次に、これは配列から値を検索して結果を出力する私の方法です:

for($i=0;$i<count($users);$i++){
foreach($users[$i] as $username_matricula => $username_fullname){
    if($username_matricula === $some_string){
        echo "Found: ".$some_string." and the result is: ".$username_fullname;
        }#end if
    }#end foreach
}#end for

そして、次の警告が表示されます。

Warning:  Invalid argument supplied for foreach().

私は何を間違っていますか?連想配列で文字列を見つける別の方法はありますか?

4

1 に答える 1

1

おそらくこれ?

foreach((array)$users[$i] as $username_matricula => $username_fullname){

実際の配列の前に (array) を追加することで、空セーフにします。(警告なし)

于 2012-06-06T17:50:28.930 に答える