[PHP-users 3723] Re: 配列変数から変数に取込んだ場合のちがいについて。

Akira Nakamura php-users@php.gr.jp
Wed, 21 Nov 2001 09:49:58 +0900


こんにちは、中村です。

At 19:58 01/11/20 +0900, you wrote:
> 山中と言います。
> いつもお世話になっております。
> 
> $ftp_server=$variable[1];
> $ftp_user_name=$variable[2];
> $ftp_user_pass=$variable[3];
> に直接値を入れていた時は問題なく動いていました。
> そこで、上記3つの代入式を
> eval('$ftp_server='.$variable[1].';');
> eval('$ftp_user_name='.$variable[2].';');
> eval('$ftp_user_pass='.$variable[3].';');
> に変更したところ、問題なく動いてくれました。

これは、取出したデータの最後に改行が付いているのが原因と思われます。
aaaa:bbb:ccc\nを読み込んだとして、
explodeだけの場合、$variable[3]のデータは、ccc\nになります。
evalを使用した場合、'$ftp_user_pass='.$variable[3].';'が$ftp_user_pass=ccc\n;と
解釈されcccだけが代入されます。

取り敢えず、$variable=explode(':',$settei[0]);を
$variable=explode(':',trim($settei[0]));として、試して見てください。

> $ftp_user_pass=$variable[3];
>> eval('$ftp_user_pass='.$variable[3].';');
> で、echo文で変数の中身を表示させただけでは、違いが分かりませんでしたが
> PHP内部の処理では、変数の扱い方が違うのでしょうか。

改行は、echoでHTMLに表示してもソースを見ないと確認出来ません。

> なぜ、挙動が違うのか理由が知りたいのですが、どなたかご存知ないでしょうか。

こちらが参考になると思います。
http://php3.de/manual/ja/function.eval.php

では、


--
横河システムエンジニアリング株式会社
 経営企画部 情報システムGr
  中村 央<nakamura@yse.yokogawa.co.jp>
   Tel:043-274-5701 Fax:043-274-5706 (内)725-2056